我敢肯定,这个问题对你们中的一些人来说可能看起来很愚蠢,但我是来学习的。
对于大多数语言,这些假设是否正确?
编辑:好的,假设我在谈论 Perl/Bash 脚本。
'Single quotes'
=> 完全没有解释(例如,'$' 或任何元字符将被视为一个字符并将打印在屏幕上)
"Double quotes"
=> 变量解释
为了更准确地表达我的担忧,我正在编写一些 shell 脚本(其中的引号有时会很麻烦),并写下了这一行:
CODIR=`pwd | sed -e "s/$MODNAME//"`
如果我在我的 sed 中使用了单引号,我的模式将是 '$MODNAME',对吗?(而不是 $MODNAME 的实际值,在这种特殊情况下是“alpha”)
我遇到的另一个问题是在 echo 中有一个 awk :
USAGE=`echo -ne "\
Usage : ./\`basename $0\` [-hnvV]\n\
\`ls -l ${MODPATH}/reference/ | awk -F " " '$8 ~ /\w+/{print "> ",$8}'\`"`
我花了一些时间调试那个。我得出的结论是反引号被转义了,因此解释器不会“拆分”命令(并在«basename»之前停止)。在 awk 命令中,'$8' 被 awk 成功解释,因此不被 shell 解释。如果我想使用 shell 变量怎么办?我会写 awk -F "\"$MY_SHELL_VAR\"" 吗?因为 $MY_SHELL_VAR 原样会被 awk 解释,不是吗?
不要犹豫,添加有关引用或反引号的任何信息!
谢谢 !:)