我正在尝试构建一个命令字符串,基于将"-e"标志和另一个变量传入另一个作为子例程调用的基本脚本,并遇到一个奇怪的问题; 当我将它传递给子程序时,我正在丢失字符串的"-e"部分.我创建了一个例子来说明问题,任何帮助?
这可以按照您的预期工作:
$echo "-e $HOSTNAME"
-e ops-wfm
Run Code Online (Sandbox Code Playgroud)
这不; 我们失去了"-e"因为它被解释为一个特殊的限定符.
$myFlag="-e $HOSTNAME"; echo $myFlag
ops-wfm
Run Code Online (Sandbox Code Playgroud)
添加"\"转义字符也不起作用,我得到前面带有"\"的正确字符串:
$myFlag="\-e $HOSTNAME"; echo $myFlag
\-e ops-wfm
Run Code Online (Sandbox Code Playgroud)
我怎样才能防止-e被吞下?
使用双引号:
$ myFlag="-e $HOSTNAME"; echo "${myFlag}"
-e myhost.local
Run Code Online (Sandbox Code Playgroud)
我使用${var}而不是$var习惯,因为这意味着我可以在变量之后添加字符,而shell不会将它们解释为变量名称的一部分.
echo可能不是这里最好的例子.大多数Unix命令都会接受--标记不再有开关.
$ var='-e .bashrc' ; ls -l -- "${var}"
ls: -e .bashrc: No such file or directory
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
121 次 |
| 最近记录: |