a=5
echo "*/$aMin * * * * bash /etc/init.d/ckDskCheck.sh"
当我尝试运行以下代码时,它会正确显示
*/5 * * * * bash /etc/init.d/ckDskCheck.sh
但是,当我尝试使用以下代码将结果分配给变量并将其打印出来时,它显示为:
a=5
cronSen=`echo "*/$a * * * * bash /etc/init.d/ckDskCheck.sh"`
echo $cronSen
Result:
所以我尝试通过以下方式逃避星号
cronSen=`echo "\*/$a \* \* \* \* bash /etc/init.d/ckDskCheck.sh"`
但还是不行。为什么?我怎样才能解决这个问题?
你有两个问题:
在反引号中无用地使用 Echo
总是引用你的话echo
所以固定代码是
a=5
cronSen="*/$a * * * * bash /etc/init.d/ckDskCheck.sh"
echo "$cronSen"
看起来你可能也有一个无用的变量使用,但也许cronSen
在更大的背景下很有用。
简而言之,引用不需要 shell 执行令牌分割和通配符扩展的所有内容。
代币分割;
words="foo bar baz"
for word in $words; do
:
(这循环了三遍。引用$words
只会在文字标记上循环一次foo bar baz
.)
通配符扩展:
pattern='file*.txt'
ls $pattern
(引用$pattern
将尝试列出一个名称为字面意思的文件file*.txt
.)
更具体地说,任何包含文件名的内容通常都应该被引用。
包含要循环的标记列表或要扩展的通配符的变量不太常见,因此我们有时会缩写为“引用所有内容,除非您确切知道自己在做什么”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)