双/单引号语法

时间:2018-04-05 18:57:46

标签: linux

当查询列表并将值放入变量并尝试在另一个脚本中使用该变量时,它会获得所需的格式。

  • 脚本1:
    cilist = $(opr-ci-list.sh -view_name TN_UD_REFRESH_MRE | sed -e' / ^ [TL - ] / d' -e' / ^ \ s * $ / d' -e' s /^....//' | awk -vORS =,' {print $ 1}' | sed' s /,$ / \ n /&#39)

此脚本的输出将是ID的逗号分隔字符串,如:7c553435c1376c8f5f020fcee0b8ef51,7d427dd75235bf513286d3210e1bd787

回声$ cilist 7c553435c1376c8f5f020fcee0b8ef51,7d427dd75235bf513286d3210e1bd787

=>做回声时没有引号

  • 脚本2:
    opr-downtime.sh -cis" \" $ cilist \""

我收到错误,因为它是围绕变量的单引号:

-cis'" 7c553435c1376c8f5f020fcee0b8ef51,7d427dd75235bf513286d3210e1bd787"'

我尝试了几种语法方法,但继续为第二个脚本输入错误的输入。或者我的前后没有引号或引号,如'"

对于正确语法的任何帮助或反馈都将不胜感激。

1 个答案:

答案 0 :(得分:0)

shell将引号字符视为特殊字符。对于双引号("),它将封闭的数据视为命令的单个参数。如果输入中包含空格(或其他shell分隔符标记),这将非常有用。但是,当为命令提供参数时,将删除引用。

您可以尝试使用反斜杠(\)来逃避双引号。但是,您可能仍希望用双引号括起所有内容,$cilist输入需要引用。

script.sh -cis "\"$cilist\""