歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> SHELL編程

shell編程基礎總結

測試運算符
 -z 字符串長度為空
 -n 字符串長度不為空
上面這倆,當條件滿足時,取值為真,呃,個人偏愛-z,以至於當需要判斷不為空時,仍用 ! -z  .....您當我犯賤吧...          
整數測試
 intl -eq int2 int1等於int2
 ntl -ne int2 int1不等於int2
 ntl -gt int2 int1大於int2
 ntl -ge int2 int1大於或等於int2
 ntl -lt int2 int1小於int2
 ntl -le int2 int1小於或等於int2

我會告訴大家,我寫這些出來,是因為我壓根就記不住嗎
邏輯測試
 expr1 -a expr2 邏輯與    &&
 expr1 -o expr2 邏輯或     ||
                     這個傳說中的邏輯與和邏輯或..這是坑....
文件測試
 -b filename 該文件是塊特殊文件
 -c filename 該文件是字符特殊文件
 -d filename 該目錄是否存在
 -f filename 該普通文件存在且不是目錄
 -g filename 設置了set-group-ID位
 -k filename sticky位被設置
 -p filename 該文件是命名管道
 -r filename 讀
 -s filename 大小不為0
 -u filename 設置了set-user-ID位
 -w filename 該文件可寫
 -x filename 該文件可執行
 -L 或者 -H filename 鏈接文件 快捷方式
            記得上次整理筆記的時候,把 -L給忘寫了...以至於上次作業,老師的意思估計是讓用判斷語句判斷文件,目錄和鏈接...當時我以為沒有判斷鏈接文件測試條件....後來...我用find....
特殊變量
 $0 腳本自身的名字
 $? 前一命令的退出狀態
 $$ shell進程的進程編號
 $! 最近一個後台命令的進程編號。以此方式存儲進程編號
 $@ 輸出所有傳遞的參數值:區別&下:加雙引號時,所有的參數均為獨立值
 $* 輸出所有傳遞的參數值:區別&上:加雙引號時,所有參數變為一個值
 $# 傳遞的位置參數總個數
 $HOEM 當前用戶家目錄
 $PS1 主要命令提示符字符串
 $LANG 當前編碼環境
 $PPID 父進程編號
 $PWD 當前的工作目錄
  其中$@和$*區別,例:
[root@bogon shellscripts]# set 'apple pie' pears peaches
[root@bogon shellscripts]# for i in "$*"; do echo $i; done
apple pie pears peaches  $*加引號時,注意結果
[root@bogon shellscripts]# for i in "$@"; do echo $i; done
apple pie    $@加引號時,注意結果
pears
peaches

 替換運算符
 ${varname:-word} 定義默認值,$varname變量名
 ${varname:+word} 如果變量存在,則顯示word值,否則返回空,用於測試變量是否存在和約束輸入
 ${varname:?message} 如果變量為空,則顯示message信息,主要用於排錯
  我只能說,這個很重要...你懂的...

Copyright © Linux教程網 All Rights Reserved