应该*在bash中转义时,它是用在双括号内执行乘法?

  • 本文关键字:执行 bash 转义 应该 bash escaping
  • 更新时间 :
  • 英文 :


我认为在bash中,当*要用于通用字符以外的含义时,应该进行转义,例如,我试图使用*将两个数字相乘。但是当我试图使用*和转义字符时,我得到了一个错误。

echo "scale=2; 10 * 3" | bc
EOF encountered in a comment.
(standard_in) 1: syntax error

但是当我不使用转义字符时,它可以工作。

echo "scale=2; 10 * 3" | bc
30

为什么会这样?有人能解释一下吗?

您将使用来转义*,而不是/,但是不,您不需要转义它。bash不做乘法;它只是将一个字符串写入bc的标准输入。

双引号已经使*不被shell解释。

echo "scale=2; 10 * 3"

等价于

echo scale=2; 10 * 3

关于第一次尝试的错误消息,bc脚本允许c风格的注释,因此/*被解释为在脚本结束之前从未完成的注释的开始。

最新更新