检查 Bash 脚本中的字符串是否等于星号?

检查 Bash 脚本中的字符串是否等于星号?

我正在编写一个 bash 脚本来执行基本的算术运算,当我这样做时:

if [ $2 == "*" ]

这是行不通的。

我如何检查星号?

答案1

您需要在命令行中转义或引用星号:

./calculator.sh 2 \* 2
./calculator.sh 2 '*' 2

并将其括$2在双引号中:

if [ "$2" == "*" ]

答案2

问题不在于if语句不起作用,而在于命令行上的星号球状的

因此,如果你的脚本被调用mycalc并从命令行运行,你就会这样做

mycalc 2 * 3

将会*被合并,并转换为当前文件夹中所有文件的名称。

为了避免扩展,你需要这样做

mycalc 2 \* 3

转义\星号并将其传递下去而不进行任何改变。

您可能需要考虑x乘法运算以避免这种情况。

答案3

*使用以下命令查找 ASCII 值

printf "%d\n" "'`echo "*" | awk '{print $1}'`"

并使用该值进行条件检查。

相关内容