我查看了bash手册页,并[[说它使用条件表达式.然后我查看了Conditional Expressions部分,它列出了与test(和[)相同的运算符.
所以我想知道,Bash [和[[Bash 之间的区别是什么?
我不知道如何在 bash 中使用简单的 if/elif/else 结构。我无法相信像这样微不足道的事情怎么会如此不直观和困难。我已经花了相当多的时间摆弄它。我想做的是这样的:
aaa="xxx"
if [[ $aaa -eq "bbb" ]]; then
echo "bbb"
elif [[ $aaa -eq "ccc" ]]; then
echo "ccc"
else
echo "something else"
fi
Run Code Online (Sandbox Code Playgroud)
我已经尝试过使用单个[、两个、with [[、((with==而不是-eq,我真的不是 Linux 人员,并且对语法非常困惑,我见过关于 if 条件的各种不同语法。bbb无论值是什么,它总是打印aaa。有人可以向我解释一下如何做到这一点才能起作用吗?
在下面的代码中,我想比较命令行参数和参数,但我不确定将参数与parameters..ie"=="或"-eq"进行比较的当前语法是什么.
#!/bin/bash
argLength=$#
#echo "arg = $1"
if [ argLength==0 ]; then
#Running for the very first
#Get the connected device ids and save it in an array
N=0
CONNECTED_DEVICES=$(adb devices | grep -o '\b[A-Za-z0-9]\{8,\}\b'|sed -n '2,$p')
NO_OF_DEVICES=$(echo "$CONNECTED_DEVICES" | wc -l)
for CONNECTED_DEVICE in $CONNECTED_DEVICES ; do
DEVICE_IDS[$N]="$CONNECTED_DEVICE"
echo "DEVICE_IDS[$N]= $CONNECTED_DEVICE"
let "N= $N + 1"
done
for SEND_DEVICE_ID in ${DEVICE_IDS[@]} ; do
callCloneBuildInstall $SEND_DEVICE_ID
done
elif [ "$1" -eq -b ]; then
if [ $5 -eq pass ]; …Run Code Online (Sandbox Code Playgroud) 我可以看到一些文章喜欢 这个地方应提到的是"当量"是用于比较整数,但是这并不能说我们不能用"=="比较整数.
我在本地bash shell上验证了这一点,"=="工作正常.那么任何人都可以让我帮助理解哪个是更好的选择,如果"-eq"那么为什么呢?