1、bash指令碼的參數處理
BASH的參數可以用$加數字編號來訪問,其中:
$#代表指令碼的參數個數
$1代表指令碼的第1個參數
$2代表指令碼的第2個參數
以此類推,$n代表指令碼的第n個參數,但是,不能用$10來訪問第十個參數。
如果遇到參數超過10個的情況,必須處理或儲存第一個參數$1,然後使用shift命令刪除參數1並將所有剩餘的參數下移一位,因此
$10就變成了$9,同時,$#的值將被您更新以反映參數的剩餘量。下面的例子用來遍曆指令碼的參數列表:
#!/bin/bashi = 1;while (($#> 0))do echo $i, $1 shift let i=i+1done
存為test.sh,加上可執行許可權,然後執行./test.sh 1 2 3 4 5 6 7 8 9 10,結果如下:
111, 12, 23, 34, 45, 56, 67, 78, 89, 910, 1011, 11
2、shell指令碼自動修改使用者口令
oz想我寫個指令碼恢複預設設定,其中有一項就是要恢複成預設密碼,在這之前,偶只曉得該密碼是passwd,然後就會顯示喊你輸入舊密碼,新密碼,是一種與使用者互動的形式。但素偶的預設密碼其實是固定的,不用互動應該就可以實現,用指令碼應該是可以實現的。
最開始在網上查,大部分都是看到用expect來處理使用者互動,但素用在偶這兒感覺有點大材小用,於是呼叫了下師兄,師兄也不清楚,於是一起查,最後實踐出一條命令是可行的,很簡單
echo 使用者名稱:密碼 | chpasswd
其實我用了也不清楚到底是什麼意思,因為偶對shell命令不熟,管道這類的也不大清楚。師兄解釋了下:chpasswd就是通過使用者輸入使用者名稱:密碼來更改一組使用者的密碼。echo相當於用echo的輸出做為chpasswd的輸入。
命令很簡單,道理也很簡單,就怕不知道,想不到!
3、替換檔案中的某一行內容
替換a.txt檔案中的第二行為aaaa:
sed -e '2s/*/aaaa:g' a.txt