1.等號兩邊不能有空格,例如:
獲取七天前的日期:
before_7_day=`date -d "7 days ago
" +%y-%m-%d`
2.自定義函式只能返回數值,不能返回陣列、字串等內容。如果需要生成字串等結果,可以宣告為全域性變數,然後將值賦給全域性變數,這樣就可以在函式外訪問
get_string()
返回錯誤:
return: 1-2: numeric argument required
修改:
numberget_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 指令碼的第一行,之後應該是什麼?如果拿這個問題去問別人,不同的人的回答可能各不相同...