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
结果:
所以我试图通过
来逃避星号cronSen=`echo "\*/$a \* \* \* \* bash /etc/init.d/ckDskCheck.sh"`
但它仍然无法运作
非常感谢任何帮助,感谢所有帮助
答案 0 :(得分:5)
你有两个问题:
在反引号中无用的回声
始终引用您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
的单个文件。)
更具体地说,通常应该引用包含文件名的任何内容。
包含要循环的令牌列表或要扩展的通配符列表的变量不常见,因此我们有时会缩写为"引用所有内容,除非您确切知道自己在做什么"。
答案 1 :(得分:3)