相关疑难解决方法(0)

shell 比较中的单等号和双等号 (=) 有什么区别?

为了比较里面的字符串,if我们需要使用双方括号。有些书说比较可以通过=. 但它也适用于==

#!/bin/bash
a="hello"
b="world"
if [[ $a == $b ]];then
    echo "equal"
fi
Run Code Online (Sandbox Code Playgroud)

比较===比较有区别吗?

bash shell-script

52
推荐指数
3
解决办法
3万
查看次数

如何在shell脚本中比较程序的版本?

假设我想比较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需要整数。那么,有没有其他方法可以比较版本?

version shell-script test numeric-data

21
推荐指数
2
解决办法
3万
查看次数

初学者脚本帮助

我正在为一个类制作一个脚本,该脚本应该要求您输入两个整数,然后要求您选择 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)

shell-script

0
推荐指数
1
解决办法
92
查看次数

标签 统计

shell-script ×3

bash ×1

numeric-data ×1

test ×1

version ×1