在bash shell中打印星号(*)

use*_*325 3 bash shell

a=5
echo "*/$aMin * * * * bash /etc/init.d/ckDskCheck.sh"
Run Code Online (Sandbox Code Playgroud)

当我尝试运行以下代码时,它显示正确
*/5****bash /etc/init.d/ckDskCheck.sh

但是当我尝试使用以下代码将结果分配给变量并将其打印出来时,它会显示为此

*/5 * * * * bash /etc/init.d/ckDskCheck.sh
Run Code Online (Sandbox Code Playgroud)

结果: 在此输入图像描述

所以我试着逃避星号

a=5
cronSen=`echo "*/$a * * * * bash /etc/init.d/ckDskCheck.sh"`
echo $cronSen
Run Code Online (Sandbox Code Playgroud)

但它仍然无效

非常感谢任何帮助,感谢所有的帮助

tri*_*eee 5

你有两个问题:

  1. Backticks中无用的回声

  2. 总是引用你的话 echo

所以固定代码是

a=5
cronSen="*/$a * * * * bash /etc/init.d/ckDskCheck.sh"
echo "$cronSen"
Run Code Online (Sandbox Code Playgroud)

看起来您可能还有无用的变量,但cronSen在更大的上下文中可能也很有用.

简而言之,引用您不需要shell执行令牌拆分和通配符扩展的所有内容.

令牌分裂;

 words="foo bar baz"
 for word in $words; do
      :
Run Code Online (Sandbox Code Playgroud)

(这循环三次.引用$words只会在文字标记上循环一次foo bar baz.)

通配符扩展:

pattern='file*.txt'
ls $pattern
Run Code Online (Sandbox Code Playgroud)

(引用$pattern将尝试列出名称字面上的单个文件file*.txt.)

更具体地说,通常应引用包含文件名的任何内容.

包含要循环的标记列表或要扩展的通配符的变量不常见,因此我们有时会缩写为"引用所有内容,除非您确切知道自己在做什么".


cuo*_*glm 5

回显变量时必须使用双引号:

echo "$cronSen"
Run Code Online (Sandbox Code Playgroud)

如果不使用双引号,bash将看到*并执行文件名扩展*扩展到当前目录中的所有文件。