linux - expr 给出语法错误

标签 linux bash shell

我正在用 bash 编写一个简单的脚本:

#!/bin/bash

if [ $# -ne 3 ]; then
        echo "Usage: $0 number1 operator number2"
        exit 1
fi

opt=$2

case $opt in
        +) echo "$1 + $3 = `expr $1 + $3`";;
        -) echo "$1 - $3 = `expr $1 - $3`";;
        /) echo "$1 / $3 = `expr $1 / $3`";;
        x|X) echo "$1 * $3 = `expr $1 * $3`";;
esac

除了 x|X 以外的所有案例都工作正常。为什么我似乎无法理解。

我在运行 ./script.sh 20 x 3 时遇到的错误是:

expr: syntax error
20 * 3 = 

我是 bash 脚本的新手,所以有人知道什么可以解决这个问题。

最佳答案

#!/bin/bash

if [ $# -ne 3 ]; then
        echo "Usage: $0 number1 operator number2"
        exit 1
fi

opt=$2

case $opt in
        +) echo "$1 + $3 = `expr $1 + $3`";;
        -) echo "$1 - $3 = `expr $1 - $3`";;
        /) echo "$1 / $3 = `expr $1 / $3`";;
        x|X) echo "$1 * $3 = `expr $1 \* $3`";;
esac

关于linux - expr 给出语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32254793/

相关文章:

linux - 如何从 awk 选择值的文件中打印文件名?

bash - 守护脚本无法启动(适用于 Google App Engine)

Python - Bash - 随机数

shell - 使用 UNIX 命令替换 csv 中的字符或修复不正确的换行符

使用 pthread_exit() 返回 retval 时编译警告

linux - 在匹配项的行尾附加一个字符

bash - 如果 [ 0 ] 返回真。为什么?

perl - 使用 Perl 循环中的变量在 Perl 循环中运行 shell 命令

linux - 我们能否将多次出现的字符串的行号捕获到变量中(仅最后一次出现)

linux - 编写一个运行程序的 shell 脚本,模拟用户对程序的输入