數值運算:
1.給變數a,b賦值 [root@localhost ~]# a=11
[root@localhost ~]# b=22
a與b相加: [root@localhost ~]# d=$(expr $a + $b)
注意:「 + 」號左右兩側必須有空格
2.表示式求值:
$ expr 1 + 3
$ expr 2 – 1
$ expr 1 * 3 使用*要加轉義符
$ echoexpr 1 + 3
注意:表示式中,數字和運算子指教要有空格,出現在語句中要加反引號
3.「((運
算式))
」或
「((表示式))」或「
((表示式)
)」或「
[表示式]」
[root@localhost ~]# a=11
[root@localhost ~]# b=22
[root@localhost ~]# g=$[ $a + katex parse error: expected 'eof', got '#' at position 28: …ot@localhost ~]#̲ a=(( (11+3)*3/2 ))
雖然乘和除的優先順序高於加,但是通過小括號可以調整運算優先順序
5.[root@localhost ~]# b=$(( 14%3 ))
14 不能被 3 整除,餘數是 2
變數表示式:
1. 條件判斷命令test:test n1 -引數 n2(或 –引數 表示式) 真返回0,假返回1。
test語句的等價形式[ 1 –lt 4 ]
可用中括號代替test,把表示式括起來實現判斷
注意表示式與中括號間有空格
1.1. 整數,比較運算子 -lt 小於 -le 小於等於 -gt 大於
-ge 大於等於 -eq 等於 -ne 不等於
1.2. 檔案測試 -f 存在且是普通檔案 -d 存在且是目錄
-s 存在且位元組數大於0 -r 存在且可讀
-w 存在且可寫 -x 存在且可執行
如:test -d 「mydoc」 判斷mydoc是否是目錄
2. 字串測試 : test s 字串s非空
test s1 = s2 字串s1等於s2 test s1 != s2 字串s1不等於s2
test -z s字串長=0,即為空串 test -n 字串長》0
3. 其他引數
-a 邏輯與 -o邏輯或 ! 邏輯非
控制流程:
1. 分支結構
1.1. if分支
if [ $# -eq 0 ]
then
echo 「輸入了0個引數」
elif [ katex parse error: expected 'eof', got '#' at position 1: #̲ -gt 1 ] …#」 in
0) echo 「輸入了0個引數」;;
1) echo 「輸入了1個引數」;;
*) echo 「輸入了多個引數」;;
esac
每個分支條件後必須以兩個分號結尾
2. 迴圈結構
for 例子——輸出100內10的倍數
for i inseq 1 9
doechoexpr $i \* 10
done
乘號前加轉義符,與數字間要有空格
#for i in #大括號中不能有變數
3. read 變數1 [變數2 …]
鍵盤上讀取多個變數的值,或輸入資料時,以空格或者tab鍵作為分隔。
如果輸入的資料個數不夠,則從左到右對應賦值,沒有輸入的變數為空;
如果輸入的資料個數超了,則從左到右對應賦值,最後乙個變數被賦予剩餘的所 有資料。
Linux系統同步集群Shell指令碼
在配置集群內的配置檔案或者軟體時,使用以下這個shell指令碼時,會發現特別簡單,和使用方法如下 需要將配置好的機器準備好與其他機器的免密登入。免密登入步驟如下 輸入ssh keygen獲取公鑰和私鑰 輸入ssh copy id ip位址 將公鑰拷給其他機器 輸入該機器的密碼就可以了。可以用ssh ...
Linux系統shell指令碼啟動jar
bin bash 這裡可替換為你自己的執行程式,其他 無需更改 使用說明,用來提示輸入引數 usage 檢查程式是否在執行 is exist then return 1 else return 0 fi 啟動方法 start 停止方法 stop 輸出執行狀態 status 重啟restart 根據輸...
linux系統下的shell指令碼
bin bash 說明我需要啟用bin目錄下的bash直譯器解釋指令碼 將第乙個檔案拷貝到第二個檔案,如果出錯將錯誤輸出到 dev null 的空。if判斷cp的返回值是否為1,1為成功,0為失敗 if cp 1 2 dev null then 成功所做的事情 if cat dev null 1 清...