bash命令的使用


bash的工作特性之命令執行狀態返回值和命令展開所涉及的內容及其示例演出

!腳本執行與調試
1、絕對路徑執行,要求文件有執行權限
2、以sh命令執行,不要求文件有執行權限
3、.加空格或source命令執行,腳本將在當前shell中執行
4、檢查腳本語法
bash -v test.sh
5、跟蹤腳本執行
bash -x test.sh

!環境腳本執行規則
用戶登錄:/etc/profile、/.bash_profile、/.bash_login、~/.profile
用戶注銷:~/.bash_logout
執行新shell: /etc/bash.bashrc、~/.bashrc
執行script(使用#!/bin/bash):如指定BASH_ENV的值,則執行其指定的啟動文件
執行script(使用#!/bin/sh):不調用任何環境腳本

!基本語法
1、腳本程序以#!/bin/bash 開始。以告之系統腳本以何種shell執行。
2、以#開頭的行被視為注解,執行時自動忽略。
3、每行不得多於255個字節,可在行末加上反斜杠的方式拆分單行內容到多行中。
例如:
test1=abcdefg
hij
klmnopq
rstuvwxyz
4、多命令以分號分隔時,命令從左至右依次執行。
例如: whoami;w
5、多命令以&&分隔時,命令從左至右按前面命令執行成功后再執行下個命令的原則依次執行。
例如:make && make install
6、多命令以||分隔時,命令從左至右按前面命令執行失敗后再執行下個命令的原則依次執行。
7、多個命令以分號分隔放置()中,則會啟用子shell並執行。
例如:(mkdir testdir;cd testdir;touch testfile)
8、多個命令以分號分隔放置{}中,則會在當前shell中執行。需要注意的是命令和{}必須有空格間隔,並且最后一條命令也必須加分號。
例如:{ mkdir testdir;cd testdir;touch testfile; }
9、被反引號`括起來的命令或$(命令),shell將直接引用執行結果。
例如:
test=date
test=$(date)
10、可以將算術運算式以$[ 算術運算式 ]的形式進行求值。注意算術運算式和[]必須有空格分隔,此方法只支持整型運算。
例如:test=$[ 32 * 17 ]
11、使用$((運算式))的形式也可以進行算術運算求值,並且可以進行布爾運算。
例如:test=$(( 32 * 17 ))
12、使用let 運算式也能進行算術運算,算術式各元素間不得有空格,否則應將算術式用引號括起來。
例如:let ++test
13、任何命令執行后均會返回一個取值范圍在0~255之間的整型返回碼。主要值含義如下:
0:正常結束
1:通用執行錯誤
2:誤用shell命令
126:命令不可執行
127:命令未找到
128:無效退出參數
130:被ctrl-c強行中止
255:退出狀態碼越界
shell script默認返回最后一條命令的返回碼。可以使用exit退出script執行並返回指定的返回碼。
例如:exit 15
通過$?這個系統變量可以獲取上一條命令的返回碼。
例如:
sync
echo $?
14、通過getopts命令獲取命令行選項。
語法為:getopts 選項行 選項變量。
選項行由各選項的單一字符組成,如某選項字符需要參數,則在選項字符后加冒號。調用時此選項后無參數的話系統會提示錯誤,如不希望出現提示則應在選項行最前面加上冒號。系統會將參數存入OPTARG變量。
例如:
#!/bin/bash
while getopts :a:bc opt
do
case $opt in
a)
echo "選項a,后跟參數:$OPTARG";;
b)
echo "選項b";;
c)
echo "選項c";;
*)
;;
esac
done
15、利用mktemp建立臨時文件
語法為:mktemp 選項 臨時文件模板
如果建立成功返回0。
臨時文件模板格式形式如:/tmp/test.XXXXXX或/usr/ttt/tttt.XXXXXX,文件名末6個字符必須為XXXXXX.生成成功后會由系統代替為隨機6個字符。
選項-q 不產生錯誤信息。
選項-p 指定建立臨時文件的父級目錄,父級目錄必須已存在。例如:mktemp -p /usr/tmp tf.XXXXXX
選項-t 按環境變量TMPDIR變量中指定的父級目錄建立臨時文件,如變量未定義,則父級目錄為/tmp
選項-d 建立的是臨時目錄。
直接執行mktemp,會在/tmp目錄下建立tmp.XXXXXX形式的臨時文件,文件名末6個字符為隨機字符。可使用下面方式獲取生成的文件名。
tmpfile=$(mktemp)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM