在bash shell中打印星号(*)

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"`

但它仍然不起作用

任何帮助将不胜感激,感谢所有的帮助


你有两个问题:

  • 在反引号中无用的回声

  • 总是引用你的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的单个文件。)

    更具体地说,任何包含文件名的东西都应该被引用。

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


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

    echo "$cronSen"
    

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

    链接地址: http://www.djcxy.com/p/24115.html

    上一篇: Printing asterisk (*) in bash shell

    下一篇: Understanding java's protected modifier