運算子 流控制 test echo

2021-07-30 17:34:41 字數 3432 閱讀 5573

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...