Linux Shell if语句

Linux Shell if语句,linux,bash,shell,Linux,Bash,Shell,我正在尝试编写一个脚本来将整数相加。我的第一个脚本用于添加数字 for number in $@; do sum=$(($sum + $number)) done echo $sum 现在我尝试编写一个if语句,检查$number是否为有效整数,如果不是,则显示错误消息并终止脚本 if [ -z $number]; then sum=$(($sum + $number)) else echo $number echo "Sorry, $number is not a number" exit

我正在尝试编写一个脚本来将整数相加。我的第一个脚本用于添加数字

for number in $@; do
sum=$(($sum + $number))
done

echo $sum
现在我尝试编写一个if语句,检查$number是否为有效整数,如果不是,则显示错误消息并终止脚本

if [ -z $number]; then
sum=$(($sum + $number))
else
echo $number
echo "Sorry, $number is not a number"
exit
fi

我花了几个小时试图弄明白这一点,但一直被卡住,帮助会很好

操作符
-z
不检查字符串是否为数字,它检查字符串的长度是否为零


没有运算符来检查字符串是否为整数,但是在bash中有几种方法可以做到这一点

操作符
-z
不检查字符串是否为数字,它检查字符串的长度是否为零


没有运算符来检查字符串是否为整数,但是在bash中有几种方法可以做到这一点

测试将只测试变量是否为空(零长度)。如果你想知道它有一个整数,你可以使用正则表达式匹配,比如

if [[ $number =~ ^-?[0-9]+$ ]]; then
    sum=$((sum + number))
else
    echo "Sorry, $number is not a number"
    exit
 fi

-z
测试将只测试变量是否为空(零长度)。如果你想知道它有一个整数,你可以使用正则表达式匹配,比如

if [[ $number =~ ^-?[0-9]+$ ]]; then
    sum=$((sum + number))
else
    echo "Sorry, $number is not a number"
    exit
 fi

你是想用“bash”而不是“base”来标记它吗?除非你有令人信服的理由,否则我建议你不要尝试用bash编程。bash/sh的发展远远超出了它们最初的功能,您可以用非常神秘的语法为其付费。人们现在更经常编写Python脚本,而在过去他们会使用sh/bash或Perl。对于某些任务,外壳是良好的;很难做到更简洁的
ls-lt | head-10 | awk'{print$2}'
。对于加法之类的东西,这有点令人讨厌。你是想用“bash”而不是“base”来标记它吗?除非你有令人信服的理由,否则我建议你不要尝试用bash编程。bash/sh的发展远远超出了它们最初的功能,您可以用非常神秘的语法为其付费。人们现在更经常编写Python脚本,而在过去他们会使用sh/bash或Perl。对于某些任务,外壳是良好的;很难做到更简洁的
ls-lt | head-10 | awk'{print$2}'
。对于加法之类的事情,这有点让人讨厌。在
^
后面加一个
-?
也可以容纳负整数。在
^
后面加一个
-?
也可以容纳负整数。