以及
注:凡是不會的命令都用man 去查:例如 man test、 man echo、
基本資料型別運算:shell中主要是整數運算和浮點書(小數)運算,
整數運算兩種方式:expr命令和 $ 實現
num1=$(expr 10 % 3) #將計算結果賦值給變數
num2=`expr 10 % 3` #將計算結果賦值給變數
expr 10 + 3 #輸出13
expr 10+3 #輸出10+3 運算子前後必須有空格,否則就被當成字串
#!/bin/bash
num1=10
num2=3
echo "num1 + num2=$[$num1 + $num2]" #輸出num1 + num2=13
echo "num1+num2=$[$num1+$num2]"#輸出num1+num2=13
浮點型資料的運算方式;
variable = $(echo "options;expression" | bc)
$()將結果儲存到變數中, 而$是使得整數運算可以按照正常的運算符號來計算,而不必在乘號前加轉義字元,或運算子前後加空格了
| 管道命令水管一頭接入前乙個命令的返回結果, 一頭接入下乙個命令。表示將前乙個命令的執行結果作為後乙個命令的引數輸入。以上,表示將表示式作為bc的引數輸入。
第二部分:
if else結構:
if command #如果if後面的command正常執行,即返回的狀態碼為0 時候,則執行then 語句,否則不執行,直接執行fi 即if語句結束
then
commands
elif
commands
fi
test命令只能判斷一下三類條件:
也可以將 if 後面的command 換成test命令
注:test命令和測試表示式使用標準的數學比較符號來表示字串比較,而用文字**來表 示數值比較。這與其它語言相比都不一樣。
num1 = 100
num2 = 100
if test $num1 -eq $num2
then
echo num1等於num2
else
echo num2不等於num1
fi也可以用雙括號替代上面的test命令,這樣就可以將文字表示替換成數學符號
if (( num1=num2 )) #括號中的兩邊都需要有空格
then
echo num1 等於num2
else
echo num2不等於 num1
使用雙方括號
雙方括號命令提供了針對字串比較的高階特性。它不僅解決了使用test所帶來的一系列毛病,還提供了一些test命令所沒有的高階用法。雙方括號命令的格式如下:
[[ expression ]]
test命令只能判斷一下三類條件:
#!/bin/bash例如:num = 3
if(( $num == 1 ))
then
echo "num=1"
elif(( $num == 2 ))
then
echo "num=2"
elif(( $num == 3 ))
then
echo "num=3"
fi此時,其實還有一種替代方案,那就是使用case.
case variableinpattern1 | pattern2) commands1;; pattern3) commands2;;
*) default commands;;
esac
例如:case $numin1)
echo "num=1";;
2) echo "num=1";;
3) echo "num=3";;
4) echo "num=4";;
*) echo "defaul";;
esac
shell指令碼 續
工具使用。sort 預設是公升序,降序可用選項 r u 去除重複行 n 以文字中的數字進行排序 t 指定分隔符 uniq u 只顯示不重複的行 c 計數 d 只顯示重複的行 paste 拼接兩個檔案 d 後面跟分隔符,將兩個檔案中的內容用分隔符隔開 s 將每個檔案的內容合併成一行 cut b 以位元...
mysql續行符是什麼 shell續行
linux下命令列的引數可能會很長,特別編譯安裝程式的時候的configure引數。如果直接寫在一行,書寫起來很長,看起來也不美觀還容易漏項。自然就會想到如何將shell的一行命令拆成多行去執行。shell已經為我們準備好了這個續行符 來把一行命令分解成多行 shell命令列下反斜線 有兩種含義 1...
Socket程式設計小結(續)
1.重用已使用的位址 問題描述 在剛剛關閉了測試程式後,再啟動伺服器時提示bind失敗,返回錯誤eaddrinuse。原因分析 套接字 主動關閉一端 在關閉套接字後會停留在time wait狀態一端時間,由於我在同一機器上同時執行客戶端與伺服器,故伺服器在重新啟動執行bind時,可能上次關閉連線還沒...