我正在编写一个 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}'`"
并使用该值进行条件检查。