關於變數的小技巧
還有一些特殊的字元可以擴充套件成系統引數。例如: \u可以擴充套件為使用者名稱, \h可以擴充套件為主機名,而\w可以擴充套件為當前工作目錄。
fname;#執行函式
echo $1, $2; #訪問引數1和引數2
echo "$@"; #以列表的方式一次性列印所有引數
echo "$0"; #命令含命令所在的路徑
echo "$*"; #類似於$@,但是引數被作為單個實體
echo $?; #讀取命令返回值
echo $!; #輸出最近乙個後台程序的pid
& #shell將命令至於後台並繼續執行指令碼
新增環境變數函式
#實現方法如下:
#path和ld_library_path現在看起來應該像這樣:
#不過我們可以把下面的函式加入.bashrc-,讓一切變得更輕鬆些:
prepend() \" && export $1 ; }
#像下面這樣來使用該函式:
我們定義了名為prepend()的函式,它首先檢查該函式第二個引數所指定的目錄是否存在。如果存在, eval表示式將第乙個引數所指定的變數值設定成第二個引數的值加上「:」(路徑分隔符),隨後再跟上首個引數的原始值。
#在這個函式中,我們引入了一種shell引數擴充套件的形式:
$#如果parameter有值且不為空,則使用expression的值
把錯誤流和輸出流輸出到同乙個檔案
#命令的退出狀態可以用$?獲得。非0就是失敗
cmd 2>&1 output.txt
cmd &> output.txt
把命令定向到檔案
cat a* | tee out.txt | cat -n
#在上面的**中,tee命令接收到來自stdin的資料,它將stdout的乙份副本寫入到檔案out.txt中,同時將另乙份副本作為後續命令的stdin.命令cat -n將從stdin中接受到的每一行資料前加上行號寫入stdout
#stderr的內容不會出現,tee只能從stdin中讀取
#tee -a 可以在檔案中追加內容而不是覆蓋
#>和》不同,兩者都可以把檔案重定向到檔案,但是前者會先清空檔案,然後再寫入內容,而後者會將內容追加到現有的檔案的尾部。
自定義檔案描述符
#使用exec命令建立自己的檔案描述符。檔案開啟方式有三種,1:唯讀2:截斷寫入3:追加寫入
#建立乙個檔案描述符進行檔案讀取:
exec 3output.txt
echo newline >&4
#建立乙個檔案描述符用於寫入(追加模式)
exec 5>>input.txt
shell中基礎指令碼
shell 指令碼 shell script 是一種為 shell 編寫的指令碼程式。業界所說的 shell 通常都是指 shell 指令碼,但讀者朋友要知道,shell 和 shell script 是兩個不同的概念。由於習慣的原因,簡潔起見,本文出現的 shell程式設計 都是指 shell 指...
shell基礎篇(十)shell指令碼的包含
前記 寫到這裡 shell中基礎差不多已經講完了。希望你已經對shell有了乙個基本了解。你可能躍躍欲試,要寫一些程式練習一下。這會對你很有好處。建議大家去chinaunix去學習 我是li0924.我會定期去上面做做題。是乙個很不錯的學習平台。可能那上面遇到最多的題目是awk sed的。當然還有對...
shell指令碼符號篇
hell執行指令碼 bin bash echo 這是乙個shell指令碼 shell指令碼中用 表示注釋,如果 位於第一 開頭 並且是則例外,它表 該指令碼使 後 指定的直譯器 bin sh解釋執 第一種執行方式 chmod x script.sh shell會 fork 乙個子程序並調 用 exe...