shell指令碼學習 功能語句 2

2021-10-02 19:10:43 字數 1833 閱讀 6581

學習常用功能語句:read、expr、test

read可讀入並傳遞給變數

expr可用於算數運算

test可用於整數、字元、檔案比較,感覺可用於條件判斷。

功能:讀入輸入的引數賦值給變數

a- 單個輸入

格式:

read param
b- 多個輸入

多個輸入格式:

read param0 param1 param2
說明:

如果只輸入了1個引數就按了回車,則後面的兩個變數無賦值。

如果輸入的引數多於變數個數,則多餘的引數全部賦值給最後乙個變數

#!/bin/bash

echo -n "input data(year month date):"

read year month date

echo "time:$year-$month-$date"

注意:對於bash不換行用-n引數;對於sh指令碼不換行用\c

#sh指令碼不換行 \c

echo "input data(year month date):\c"

#bash指令碼不換行 -n

echo -n "input data(year month date):"

2- 算數命令expr

expr可用於算數運算。運算子前後有空格;乘法用\*;

注意如果將結果賦值給另一變數,使用反引號(esc下面和~在一塊的反引號!)

示例:

#!/bin/bash

ret=`expr 2 + 3 \* 2`

echo $ret

3- 測試test

可用於測試數字、字元、檔案。測試結果可用$?列印,表示上次命令執行結果,正確返回0。

a-  數字測試

eq等於則為真

-ne不等於則為真

-gt(greater)大於則為真

-ge大於等於則為真

-lt(lower)小於則為真

-le小於等於則為真

b-  字元測試;

=等於則為真

!=不相等則為真

-z 字串

字串的長度為零則為真

-n 字串

字串的長度不為零則為真

c-  檔案測試:

-e 檔名

如果檔案存在則為真

-r 檔名

如果檔案存在且可讀則為真

-w 檔名

如果檔案存在且可寫則為真

-x 檔名

如果檔案存在且可執行則為真

-s 檔名

如果檔案存在且至少有乙個字元則為真

-d 檔名

如果檔案存在且為目錄則為真

-f 檔名

如果檔案存在且為普通檔案則為真

-c 檔名

如果檔案存在且為字元型特殊檔案則為真

-b 檔名

如果檔案存在且為塊特殊檔案則為真

此外還有選項-nt、-ot 檔案1是否檔案2新、舊。

示例:

#!/bin/bash

#數字測試

test 6 -eq 6

echo $?

#字元測試

test "hello" = "hi"

echo $?

#檔案測試

test -e hello.c

echo $?

shell指令碼學習2

前面已經介紹過shell指令碼的基本的使用的方法,在這篇中我將介紹三個字元擷取命令cut和awk以及sed命令。1 cut命令 cut 選項 檔名 選項 f 列號 提取第幾列 列號之間用,分開,列號之間是用製表符分開 d 分隔符 按照指定分隔符分割列 分隔符 cut命令與grep命令經常聯合使用 c...

Shell指令碼學習(2)

在執行shell指令碼時,向shell指令碼傳遞引數,獲取引數的格式為 n。其中n表示乙個數字,作為執行指令碼的第n個引數,且n 0。1 bin bash 2 echo shell 傳遞引數例項!3 echo 執行的檔名 0 4 echo 第乙個引數為 1 5 echo 第二個引數為 2 6 ech...

shell指令碼if語句

if條件判斷語句,通常以if開頭,fi結尾。也可加入else或者elif進行多條件的判斷,if表示式如下 if 表示式 語句1else 語句2fi if常見的判斷邏輯運算子 f 判斷檔案是否存在,例如if f filename d 判斷目錄是否存在,例如if d dir eq 等於,應用於整型比較,...