aye*_*aye 2 command-line bash scripts
我对终端编程比较陌生。我正在尝试IF在FOR循环中运行一个条件。(该命令将由 cronjob 运行)
for i in {1..5}; do echo $i; if [ $i>3 ]; then echo $i; fi; done
我希望它输出为
1
2
3
4
4
5
5
Run Code Online (Sandbox Code Playgroud)
但该命令的真正输出是
1
1
2
2
3
3
4
4
5
5
Run Code Online (Sandbox Code Playgroud)
谁能帮我指出错误?
谢谢!
[括号是test命令的别名,>常规测试命令中没有符号。用[ $i -gt 3 ]
$ for i in {1..5}; do echo $i; if [ $i -gt 3 ] ; then echo $i; fi; done
1
2
3
4
4
5
5
Run Code Online (Sandbox Code Playgroud)
你可以使用bash的算术扩展(()) ,以及
$ for i in {1..5}; do echo $i; if (( $i>3 )) ; then echo $i; fi; done
1
2
3
4
4
5
5
Run Code Online (Sandbox Code Playgroud)
你也可以使用expr,但我保证 100% 你会一直忘记\转义<和>唱歌,以及将输出重定向到/dev/null:
$> if expr 3 \> 2 > /dev/null ; then echo YES; else echo NO ; fi
YES
$> if expr 3 \< 2 > /dev/null ; then echo YES; else echo NO ; fi
NO
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
489 次 |
| 最近记录: |