shell編碼常用表

2021-06-26 18:40:50 字數 1833 閱讀 5167

特殊變數列表 變數

含義 $0

當前指令碼的檔名 $n

傳遞給指令碼或函式的引數。n 是乙個數字,表示第幾個引數。例如,第乙個引數是$1,第二個引數是$2。 $#

傳遞給指令碼或函式的引數個數。 $*

傳遞給指令碼或函式的所有引數。 $@

傳遞給指令碼或函式的所有引數。被雙引號(" ")包含時,與 $* 稍有不同,下面將會講到。 $?

上個命令的退出狀態,或函式的返回值。 $$

當前shell程序id。對於 shell 指令碼,就是這些指令碼所在的程序id。

字串運算子列表

運算子 說明

舉例 =

檢測兩個字串是否相等,相等返回 true。

[ $a = $b ] 返回 false。 !=

檢測兩個字串是否相等,不相等返回 true。

[ $a != $b ] 返回 true。 -z

檢測字串長度是否為0,為0返回 true。

[ -z $a ] 返回 false。 -n

檢測字串長度是否為0,不為0返回 true。

[ -z $a ] 返回 true。

str檢測字串是否為空,不為空返回 true。

[ $a ] 返回 true。

shell 中包含指令碼可以使用:

.  filename

或source filename

兩種方式的效果相同,簡單起見,一般使用點號(.),但是注意點號(.)和檔名中間有一空格

檔案測試運算子列表

操作符 說明

舉例-b file

檢測檔案是否是塊裝置檔案,如果是,則返回 true。

[ -b $file ] 返回 false。

-c file

檢測檔案是否是字元裝置檔案,如果是,則返回 true。

[ -b $file ] 返回 false。

-d file

檢測檔案是否是目錄,如果是,則返回 true。

[ -d $file ] 返回 false。

-f file

檢測檔案是否是普通檔案(既不是目錄,也不是裝置檔案),如果是,則返回 true。

[ -f $file ] 返回 true。

-g file

檢測檔案是否設定了 sgid 位,如果是,則返回 true。

[ -g $file ] 返回 false。

-k file

檢測檔案是否設定了粘著位(sticky bit),如果是,則返回 true。

[ -k $file ] 返回 false。

-p file

檢測檔案是否是具名管道,如果是,則返回 true。

[ -p $file ] 返回 false。

-u file

檢測檔案是否設定了 suid 位,如果是,則返回 true。

[ -u $file ] 返回 false。

-r file

檢測檔案是否可讀,如果是,則返回 true。

[ -r $file ] 返回 true。

-w file

檢測檔案是否可寫,如果是,則返回 true。

[ -w $file ] 返回 true。

-x file

檢測檔案是否可執行,如果是,則返回 true。

[ -x $file ] 返回 true。

-s file

檢測檔案是否為空(檔案大小是否大於0),不為空返回 true。

[ -s $file ] 返回 true。

-e file

檢測檔案(包括目錄)是否存在,如果是,則返回 true。

[ -e $file ] 返回 true。

shell指令碼編碼問題

最近某個指令碼的執行經常導致編碼問題。指令碼從遠端mysql資料庫獲取影片中文名,然後再匯入本機的mysql中。發現由crontab自動執行的時候獲取的影片名稱都是亂碼,但手動執行指令碼卻正常輸出。幾天都是這個問題。今天突然想起以前也有類似問題,在終端執行 echo lang 然後在指令碼中加 ex...

設定shell視窗編碼

在windows中安裝的cmder預設的客戶端編碼為中文簡體 gbk 如果某些命令輸出的字元編碼是utf 8,就會出現中文字元亂碼的問題。此時,我們可將cmder的字元編碼改為utf 8,來解決中文亂碼的問題。有以下兩種方法。1.臨時修改cmder的字元編碼 開啟cmder,執行下面的命令即可 ch...

shell檔案內容編碼轉換

linux下有時需要對文字檔案的編碼格式進行轉換,下面是在專案中用過的一些shell命令。要想對文字內容的字元編碼進行轉換,具體引數含義 j 轉換為 jis 編碼 iso 2022 jp 預設 e 轉換為 euc 編碼 s 轉換為 shift jis 編碼 w 轉換為 utf 8 編碼 無bom l...