Isa*_*rke 1 bash shell quotes perl
我相信这个问题对你们中的一些人来说似乎很愚蠢,但我在这里要学习.
这些假设对大多数语言都是正确的吗?
编辑:好的,我们假设我在谈论Perl/Bash脚本.
'Single quotes'
Run Code Online (Sandbox Code Playgroud)
=>根本没有解释(例如'$'或任何元字符将被视为字符并将在屏幕上打印)
"Double quotes"
Run Code Online (Sandbox Code Playgroud)
=>可变解释
为了更准确地说明我的问题,我正在编写一些shell脚本(其中引号有时候会很麻烦),并写下这一行:
CODIR=`pwd | sed -e "s/$MODNAME//"`
Run Code Online (Sandbox Code Playgroud)
如果我在我的sed中使用单引号,我的模式将是'$ MODNAME',对吧?(而不是$ MODNAME的实际值,在这种特殊情况下是'alpha')
我有另一个问题,在回声中有一个awk:
USAGE=`echo -ne "\
Usage : ./\`basename $0\` [-hnvV]\n\
\`ls -l ${MODPATH}/reference/ | awk -F " " '$8 ~ /\w+/{print "> ",$8}'\`"`
Run Code Online (Sandbox Code Playgroud)
我花了一些时间调试那个.我得出结论,反引号被转义,以便解释器不会"拆分"命令(并在«basename»之前停止).在awk命令中,'$ 8'被awk成功解释,因此不是shell.如果我想使用shell变量怎么办?我会写awk -F"\"$ MY_SHELL_VAR \""吗?因为$ MY_SHELL_VAR是,将被awk解释,不会吗?
不要犹豫,添加任何有关引用或反引号的信息!
谢谢 !:)
它因语言而异.例如,在C/Java/C++/C#等系列中,根本不能对字符串使用单引号 - 它们仅用于单个字符.
我认为,对于您真正感兴趣的语言而言,正确地学习规则远比尝试概括要好得多.