gpt4 book ai didi

bash - 在 bash shell 中打印星号 ("*")

转载 作者:行者123 更新时间:2023-11-29 09:19:15 27 4
gpt4 key购买 nike

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

结果:

enter image description here

所以我尝试通过

来转义星号
cronSen=`echo "\*/$a \* \* \* \* bash /etc/init.d/ckDskCheck.sh"`

但是还是不行。为什么?我该如何解决这个问题?

最佳答案

你有两个问题:

  1. 在反引号中无用地使用 echo

  2. 总是引用你echo

所以固定的代码是

a=5
cronSen="*/$a * * * * bash /etc/init.d/ckDskCheck.sh"
echo "$cronSen"

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

简而言之,引用所有不需要 shell 执行 token 拆分和通配符扩展的地方。

代币 split ;

 words="foo bar baz"
for word in $words; do
:

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

通配符扩展:

pattern='file*.txt'
ls $pattern

(引用 $pattern 会尝试列出名称为 file*.txt 的单个文件。)

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

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

关于bash - 在 bash shell 中打印星号 ("*"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25277037/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com