shell指令碼注意點

2021-09-25 12:43:05 字數 1409 閱讀 4469

1.等號兩邊不能有空格,例如:

獲取七天前的日期:

before_7_day=`date -d "

7 days ago

" +%y-%m-%d`

2.自定義函式只能返回數值,不能返回陣列、字串等內容。如果需要生成字串等結果,可以宣告為全域性變數,然後將值賦給全域性變數,這樣就可以在函式外訪問

get_string()

返回錯誤:

return: 1-2: numeric argument required

修改:

number

get_string()

3.字串拼接不用「+」

例如:如果使用「+」:

name1="

chun

"name2="

tian

"echo $name1+$name2

輸出為:

chun+tian

修改為:

name1="chun

"name2="tian

"echo $$

輸出:

chuntian

4. for迴圈使用

5.$、#、##、%、%%使用範例

假設定義了乙個變數為,【**如下】:

file=/dir1/dir2/dir3/my.file.txt

可以用$分別替換得到不同的值:

$:刪掉第乙個 / 及其左邊的字串:dir1/dir2/dir3/my.file.txt

$:刪掉最後乙個 /  及其左邊的字串:my.file.txt

$:刪掉第乙個 .  及其左邊的字串:file.txt

$:刪掉最後乙個 .  及其左邊的字串:txt

$:刪掉最後乙個  /  及其右邊的字串:/dir1/dir2/dir3

$:刪掉第乙個 /  及其右邊的字串:(空值)

$:刪掉最後乙個  .  及其右邊的字串:/dir1/dir2/dir3/my.file

$:刪掉第乙個  .   及其右邊的字串:/dir1/dir2/dir3/my

【記憶的方法為】:

# 是 去掉左邊(鍵盤上#在 $ 的左邊)

%是去掉右邊(鍵盤上% 在$ 的右邊)

單一符號是最小匹配;兩個符號是最大匹配

$:提取最左邊的 5 個位元組:/dir1

$:提取第 5 個位元組右邊的連續5個位元組:/dir2

也可以對變數值裡的字串作替換:

$:將第乙個dir 替換為path:/path1/dir2/dir3/my.file.txt

$:將全部dir 替換為 path:/path1/path2/path3/my.file.txt

**:

shell指令碼命令格式注意點

1 大部分的linux系統預設配置 bash 對比sh bash 擴充套件了一些命令和引數,並且保留對 sh的一些相容 除了bash sh 還有csh 語法類似 c語言 tcsh csh 公升級版 ash 適合低記憶體環境 2 指令碼開頭 bin sh 必須有,後面跟上的是 shell 的路徑3 變...

shell指令碼注意語法

shell scripts就是利用shell的功能 語法及命令 結合正規表示式 管道命令和資料流重定向等功能所編寫的乙個程式,是乙個純文字檔案,不需要經過編譯就能夠執行的。1.linux系統的服務啟動介面都是在 etc init.d 目錄下。2.read 鍵盤讀取的命令。相當與c語言scanf和c ...

shell指令碼編寫注意

這八個建議,於鍵者幾年來編寫 shell 指令碼的一些經驗和教訓。事實上開始寫的時候還不止這幾條,後來思索再三,去掉幾條無關痛癢的,最後剩下八條。毫不誇張地說,每條都是精挑細選的,雖然有幾點算是老生常談了。shell 指令碼的第一行,之後應該是什麼?如果拿這個問題去問別人,不同的人的回答可能各不相同...