Shell腳本學習
讀
《Shell腳本學習指南》
一書
基本語法
- 環境變量
$PATH
- IO重定向:
- 以
<
改變標準輸入
- 如:
tr -d '\r' < dos-file.txt
- 如:
- 以
>
改變標準輸出
- 如:
tr -d '\r' < dos-file.txt > UNIX-file.txt
(如果>
的目的文件不存在,將自動創建,若存在,將覆蓋原文件)
- 如:
- 以
>>
附加到文件(文件末尾追加)
- 若文件不存在,則自動創建,若存在,則在文件末尾追加
- 以
|
建立管道
- 前一個program的輸出作爲後一個program的輸入(
program1 | program2
),如:ls | grep a
- 前一個program的輸出作爲後一個program的輸入(
- 以
特殊文件:
/dev/null
和/dev/tty
/dev/tty:輸入密碼時,默認不打印輸入的密碼到終端,例如:(-echo 用來關閉打印輸入,echo打開)
printf "Enter new password: " stty -echo read pass < /dev/tty printf "Enter again: " read pass2 < /dev/tty stty echo ...
常用命令:
- who:查詢系統的登陸用戶
- cat > 文件名 :將後面的輸入信息重定向到文件中,以 ^D 結束
- tr:轉換字符
-d
:刪除source-char-list所列舉的字符,如:tr -d '\r' < dos-file.txt | sort > UNIX-file.txt
,將dos-file.txt中的回車符全部刪掉,再排好序重定向到UNIX-file.txt文件中
- sh (執行一個腳本)
-x
顯示腳本中的每個命令,以+
開頭,可以在腳本中打開追蹤功能,set -x
,用set +x
關閉追蹤
- grep
- sed
- cut
- awk
- sort
- uniq :(去重)
- head -n n 查看前n行
tail -n n 查看後n行
umask
命令使用注意事項
- 以
-
開頭表示選項,以--
開頭表示長選項 - 多條命令寫在一行,以
;
分隔
腳本的語法說明:
- 以
#! 腳本解釋器路徑
開頭,如:#! /bin/sh
- 變量
- 命名:字母或下劃線開頭,後面可以是字母數字,下劃線
- 賦值:變量名=值(注意等號前後不能有任何空格,變量值之間有空格時,需要用引號括起來),單行多次賦值,之間用空格分隔
- 使用變量:以
$變量名
- 輸出:
echo
- echo 參數(參數以空格分隔)
printf
- 不會自動換行,需要換行,需在末尾加上
\n
- 例句:
printf "the first program always print %s,%s" hello world
(\d
表示十進制整數)
- 不會自動換行,需要換行,需在末尾加上
- 再shell腳本中訪問shell腳本的參數
- 讀取第
n
個參數,通過$n
讀取,若n
的數值大於9,則需用大括號括起來,如${10}
,讀取第10個參數
- 讀取第
未完–