shell--基本语法
繼續運算符模塊。
part1 算術運算符
+
-
*
/
%
part2 關系操作
與(())連用
<
>
<=
>=
==
!=
&&
||
?
注意:一個等號是賦值操作,兩個等號是判斷
test命令相關,[]可以達到一樣的效果
?
part3 賦值運算符
=
+=
*=
/=
%=
part4 shell里的所有計算器
$[] (()) $(()) expr bc bc -l
浮點運算:yum install bc -y
part5 測試操作
命令執行后會返回到一個系統變量中 $?
如果$?值為0 表示命令執行成功 否則為失敗
測試命令 test [ ] [[ ]] (( ))
打開man test 逐一介紹每個參數
part5-1、測試文件狀態
-d 目錄
-s 文件長度 > 0、非空
-f 正規文件
-w 可寫
-r 可讀
-x 可執行
-L 符號連接
-u 文件有 suid 位設置
part5-2、字符串測試
= 兩個字符串相等
!= 兩個字符串不相等
-z 空串
-n 非空串
part5-3、測試數值
-eq 等于
-ne 不等于
-gt 大于
-lt 小于
-ge 大于等于
-le 小于等于
?
part5-4、拓展測試符號 [[ ]] (())
數字測試符號
# [ 10 < 2 ] # 語法錯誤
-bash: 2: 沒有那個文件或目錄
#
# [[ 2 > 10 ]] # 結果錯誤
# echo $?
0
# [[ 20 > 10 ]] # 正確
# echo $?
0
# (( 10 < 20 ))
# echo $?
0
?
字符測試
# [ "aa" = "aa" ]
# echo $?
0
# [[ "aa" = "aa" ]]
# echo $?
0
# (( "aa" = "aa" )) #結果錯誤
# echo $?
1
混合測試
# [ a = a -a 10 < 20 ]
-bash: 20: 沒有那個文件或目錄
[root@seker ~]# [[ a = a -a 10 < 20 ]]
-bash: syntax error in conditional expression
-bash: syntax error near `-a'
[root@seker ~]# [[ a = a && 10 < 20 ]]
[root@seker ~]# echo $?
0
[root@seker ~]# [[ a = a || 10 < 20 ]]
[root@seker ~]# echo $?
0
[root@seker ~]# (( a = a || 10 < 20 ))
[root@seker ~]# echo $?
0
[root@seker ~]# (( a = a && 10 < 20 ))
[root@seker ~]# echo $?
0
[root@seker ~]#
結論:
比較數字,使用(( ))
其他測試使用 [[ ]]
包含數字比較的混合測試,使用[[ expr1 && expr2 ]] (( expr1 || expr2 ))
?
兩個文件的比較
FILE1 -ef FILE2
測試兩個文件是否是相同的inode
有時為了找到同一個INODE號的文件 更傾向于使用 find 命令的 -inum 或 --samefile
?
FILE1 -nt FILE2
FILE1 is newer (modification date) than FILE2
?
FILE1 -ot FILE2
FILE1 is older than FILE2
四 流程控制
part1分支結構
if 測試中還可以執行命令 根據命令的返回值做判斷
# if cd / ;then echo Y ;fi
# if grep -q root /etc/passwd ;then echo Y ;fi
?
?
part2 循環結構
?
part2-1 while循環
while (條件)
do
動作
done
需要無限循環時我們會選擇while :
練習:
1.while死循環
2.wihle和read實現逐行處理
part2-2 for循環
shell格式的for
?
for i in {1..10} do echo $i done?
shell的for,常用in列表方式
小例子:
檢查內網存活的IP? ?
?
多個for嵌套
嵌套for中使用
continue:默認退出本次循環
break:默認退出本層循環
其他
可視塊:Ctrl+v? shift +a/i/o 輸入內容,比如空格,然后esc,優化視覺效果
?
轉載于:https://www.cnblogs.com/metianzing/p/6946872.html
總結
以上是生活随笔為你收集整理的shell--基本语法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: unraid win10_搞定unrai
- 下一篇: matlab 拟合平方根,matlab拟