为了比较里面的字符串,if
我们需要使用双方括号。有些书说比较可以通过=
. 但它也适用于==
。
#!/bin/bash
a="hello"
b="world"
if [[ $a == $b ]];then
echo "equal"
fi
Run Code Online (Sandbox Code Playgroud)
比较=
和==
比较有区别吗?
假设我想比较gcc
版本以查看系统是否安装了最低版本。
为了检查gcc
版本,我执行了以下操作
gcc --version | head -n1 | cut -d" " -f4
Run Code Online (Sandbox Code Playgroud)
输出是
4.8.5
Run Code Online (Sandbox Code Playgroud)
所以,我写了一个简单的if
语句来检查这个版本与其他一些值
if [ "$(gcc --version | head -n1 | cut -d" " -f4)" -lt 5.0.0 ]; then
echo "Less than 5.0.0"
else
echo "Greater than 5.0.0"
fi
Run Code Online (Sandbox Code Playgroud)
但它抛出一个错误:
[: integer expression expected: 4.8.5
Run Code Online (Sandbox Code Playgroud)
我理解我的错误,我使用字符串进行比较并且-lt
需要整数。那么,有没有其他方法可以比较版本?
我正在为一个类制作一个脚本,该脚本应该要求您输入两个整数,然后要求您选择 a / s / m / d 进行加、减、乘或除。它还将确保您输入了一个整数和一个有效的选项,但我稍后会处理这个问题。现在这是我所拥有的:
#!/bin/bash
echo "Please input a whole number"
read num1
echo "Please input another whole number"
read num2
echo "Please input funtion: [a] for addition, [s] for subtraction, [m] for multiply, or [d] for divide"
read func
if [ "$func" -eq "a" ]; then
echo $((num1 + num2))
fi
if [ "$func" -eq "s" ]; then
echo $((num1 - num2))
fi
if [ "$func" -eq "m" ]; then
echo $((num1 * num2)) …
Run Code Online (Sandbox Code Playgroud)