shell傳遞引數,
執行shell指令碼的時候,向指令碼中傳遞引數,指令碼內獲取引數的格式為 $n n是乙個數字,代表的是
第幾個引數,n是從1開始,0指的是檔案的檔名,
echo "執行的檔名:$0";
echo "第乙個引數為:$1";
$#傳遞到指令碼的引數個數, $*顯示全部的傳入引數。
三個引數1 2 3 則「*」表示"123" 」@」表示「1」 」2「 」3」
陣列: 可以存放多個值的資料型別 shell不支援多維陣列
定義陣列
array_name=(1 2 3 4)
array_name[0]=value1
讀取陣列
$ 讀取陣列中的所有元素
$ $
獲取陣列的長度
$ $
shell基本運算子:
算術運算子:+ - × / % = == != *號前面使用expr必須加\ *
原生的bash不支援算術運算,一般通過命令awk expr 來實現
expr 2 + 2 :表示式與運算子之間要有空格2+2不對,
完成的表示式要被``包括,0
關係運算子:
-eq 檢測兩個數是否相等
-ne 檢測兩個數是否不相等
-gt 檢測左邊數是否大於右邊數
-lt 檢測左邊是否小魚右邊
-ge 檢測左邊是否大於等於右邊
-le 檢測左邊是否小於等於右邊
eg: [$a -eq $b ] 引數要用變數內容
布林運算子: !非運算 -o 或運算 -a與運算
[! false ] [a−
lt20−
o b -gt 100] [$a -lt 20 -a ]
邏輯運算子: && 與 ||或
字串運算子: = !=
-z 檢測字串長度是否為0 是則返回true
-n 檢測字串長度是否為0 不是則返回true
str 檢測字串是否為空,不為空返回true
檔案測試運算子
-b 檢測檔案是否是塊裝置檔案
-c 檢測檔案是否是字元裝置檔案
-d 檢測檔案是否是目錄
、、、、、、
echo 命令
顯示普通字串 : echo 「tiansongtao」
顯示轉移字串 : echo 「\」if is a tian\」「
顯示變數 : echo 」 $name 「
顯示換行 : echo -e 」 ok! \n」 -e 開啟轉義
顯示不換行 : echo -e 」 ok \c」
顯示結果定向至檔案 echo 「tiansongtao 「>>myfile
原樣輸出字串,不轉義取變數 echo$tian\"
—–$tian\」
顯示命令執行結果: echodate
—-顯示當前時間
printf 模仿c的輸出 可以控制多種輸出
eg printf format-string [arguments、、、]
format-string 為格式控制字串
arguments 為引數列表
print "%-10s %-8s %-4s\n" 姓名 性別 體重kg
print "%-10s %-8s %-4.2f\n" 郭靖 男 66.2
結果為: 姓名 性別 體重kg
郭靖 男 66.2
%s %c % d %f 都是格式替代符 %-10s:指乙個寬度為10的字元,(-表示
左對其,沒有是右對其,) %-4.2f 表示格式為小數,.2表示兩位小數
printf轉義字元:
\a 警告 \b後退 \c抑制不顯示輸出結果中的換行字元
\n 換行 \f換頁 \v垂直製表,
test命令: 檢查某個條件是否成立,他可以進行數值、字元、檔案三方面的測試
-eq 等於則為真
-ne 不等於則為真
-gt 大於則為真 -ge 大於等於則為真
-lt 小於則為真 -le 小魚等於則為真
eg: num1=100 num2 = 100
if test $[num1] -eq $[num2]
then
echo "兩數相等"
shell流程控制
在shell中,如果else沒有要執行的語句就不要這個else
if else
if condition
then
command1
command2
else
command
fi末尾要用fi就是if 倒過來的拼寫
if-else -if -else
if condition1
then
command1
elif condition2
then
command
else
commandn
fi
for迴圈
for var in item1 item2、、、
do command1
done
eg: for loop in 1 2 3 4 5
doecho "the value is $loop"
done
while語句
while condition
do command1
done
eg: int-1
while((in
t<=5)
)doe
cho int
done
case 語句為多選擇語句,
工作方式,取值後必有單詞in,每乙個模式以)括號結束,乙個模式一致執行到;;
case 值 in
模式1)
command1
;; 兩個;;號就相當於break
模式2)
command2
;;esac 這個為全部結束標誌
eg: echo `你輸入的數字為:`
read anum
case $anum in
1) echo `你選擇了1`
;;2) echo `你選擇了2`
;;esac
跳出迴圈 break
允許跳出所有迴圈,(終止執行後面的所有迴圈)
continue 跳出本次迴圈,接著執行別的迴圈 運算子 控制流
短路與 或 一旦條件成立,則輸出結果,後面內容不執行,執行速率高效 如 true false true true。非短路 按程式邏輯全部執行 邏輯判斷?為true則輸出此位資料 為false則輸出此位資料 運算子優先順序 1 括號,如 2 一元運算子 3 二元運算子 4 關係運算子 5 邏輯運算子 ...
C 運算子 控制流
1 運算子 1.1 一元運算子 負號 正號 可以省略 1.2 二元運算子 優先順序,乘 除 取餘 加 減 賦值 二元賦值運算子,1.3 三元運算子 條件?結果1 結果2 條件 為true時返回 結果1 為flase返回 結果2 1.4 關係運算子和相等運算子 1.5 邏輯運算子 or運算子 任何乙個...
(2)運算子和控制流
運算子 一元運算子 二元運算子 將加法運算子用於字串。在算數運算子中使用字元。int n 3 4 char c char n 浮點型別的特殊性 不精確 非數字 1f 0 負無窮大 圓括號 賦值運算子 遞增遞減 線性安全的遞增和遞減 system.threading.interlocked incre...