如何在csh中实现多行字符串的嵌套定义?
解决方案:多行可读且支持变量嵌套的字符串定义
根据你遇到的问题,核心是不同环境下的多行字符串续行规则和变量展开逻辑不匹配,以下分两种常见场景给出可行方案:
场景1:Bash/Zsh 等类Unix Shell
方法1:修正双引号续行写法
确保反斜杠是该行最后一个字符(无后续空格),双引号内的变量会正常展开:
String_A="Make \ Something \ End" String_B="${String_A} \ And add \ Something else" String_C="${String_B} Finally something good"
方法2:使用Here-Document(更易读)
适合超长字符串,通过EOF标记界定内容,需要变量展开时去掉EOF的单引号:
# 定义不含变量的多行字符串 String_A=$(cat <<'EOF' Make Something End EOF ) # 定义包含变量展开的多行字符串 String_B=$(cat <<EOF ${String_A} And add Something else EOF ) String_C="${String_B} Finally something good"
方法3:数组拼接(灵活可控)
用数组存储每行内容,再拼接成完整字符串:
# 按行存储到数组 String_A_lines=( "Make" "Something" "End" ) # 用空格连接数组元素成字符串 String_A="${String_A_lines[*]}" String_B_lines=( "${String_A}" "And add" "Something else" ) String_B="${String_B_lines[*]}" String_C="${String_B} Finally something good"
场景2:Windows CMD 命令提示符
CMD的续行符是^而非\,且需注意set命令的正确格式(避免空格干扰):
set "String_A=Make ^ Something ^ End" set "String_B=%String_A% ^ And add ^ Something else" set "String_C=%String_B% Finally something good"
内容的提问来源于stack exchange,提问作者Julien6405
相关产品推荐
相关产品推荐

