我认为在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风格的注释,因此/*
被解释为在脚本结束之前从未完成的注释的开始。