歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> SHELL編程 >> shell腳本總結

shell腳本總結

日期:2017/3/1 16:55:49   编辑:SHELL編程
shell腳本總結 有段時間沒用shell編程了,開始有些生疏。最近回顧了下,就當筆記吧。如果能夠給有需要的人一點幫助,也就心滿意足了,呵呵……不多說了,直入主題。 1.shell 腳本是區分小寫的 www.2cto.com 2.Unix特殊字符有: ( ; $ ? & * () [] ` ‘ “ + 使用其時要進行轉義() 3.Shell的注釋以#開頭 4.函數的定義 Function fuction_name(){ Command to execute } 調用時直接用function_name. 5.控制結構 1)If...then語句 If [ test_command ] Then Commands if 2)If...then...else語句 If [ test_command ] Then Commands Else commands if 3)If...then...elif...then...(else)語句 If [ test_command ] Then Commands Elif [ test_command ] Then Commands Else Commands Fi 4)for ... In語句 For loop_varible in argument_list Do Commands done 5)while語句 While test_command_is_true Do Commands Done 6)until 語句 Until test_command_is_true Do Commands Done 7)case語句 Case $variable in Match_1) Commands_for_1 ;; Match_2) Commands_for_2 ;; . . . *) #option for other values Commands_for_no_match ;; esac 6.break、continue、exit和return語句 Break跳出整個循環體,然後執行循環體外接下來的代碼; Continue 結束本次循環,繼續下次循環; Exit 退出整個腳本,一般在其後加入一個整數(如exit 0),作為返回代碼發送給系統; Return 用於在函數中返回數據,或返回一個結果給調用函數 7.here文檔 用於將輸入重定向到某個交互式shell腳本或程序,而不需要用戶介入。 Program_name << LABLE Program_input_1 Program_input_2 . . Program_input_# LABLE 注意,程序輸入行中的LABLE標記之間是沒有空白的,且輸入的必須是程序所期望的准確數據,否則可能會失效。 8.符號命令 ( )  在一個子shell中運行括號所括起來的命令 (( )) 在某個shell中對變量進行求值和賦值,並進行數學運算 $(( )) 對括起來的表達式進行求值 [ ] 與test命令相同 [[ ]] 用於字符串比較 $( ) 命令替換 ` ` 命令替換 9.命令行參數 命令行參數$0,$1,$2,...,$9是位置參數,$0指向的是命令本身。 命令shift用於位置參數向左移動,如shift命令命令$2成為$1。Shift加入一個數字來移動多個位置,如shift 3使得$4成為$1。shift是一種按照參數列出順序來處理每個位置參數的良好方式。 10.特殊參數 $* 指定所有的命令行參數,與$@的意義一樣。兩者只有在加雙引號時意義不同,如 “$*”將整個參數列表作為一個參數來獲取,”$@”獲取整個參數列表,並將它分隔成不同的參數。 $? 檢查返回代碼。一個成功執行完的命令返回代碼為0,不成功是一個非0值。 11.雙引號,單引號和 `(esc下面的按鍵) 單引號’’對內容進行全引用,也就是說,對變量工命令語句使用文字正文,不進行任何替換;而雙引號則進行部分引用,則允許字符替換或命令替換。 `(esc下面的按鍵)用於執行某個命令或腳本並替換其輸出結果,即命令替換,相同功能有$( )。此外,如果希望每次使用某個變量時重新讀取它的值,也可使用它,如`$PWD`,則每次使用這個變量時都會重新讀取它的新值。 www.2cto.com 12.文件權限和粘滯位(suid,sgid) 文件權限有讀,寫,執行三種權限。將文件操作模式設為總是作為某個特定的用戶(suid),或總是作為某個特定的組成員(sgid)來執行稱為設置粘滯位。可以用命令chmod進行修改文件權限。 13.在遠程主機上運行命令 Ssh user@hostname command_to_execute 如:ssh [email protected] “uptime” 14.設置陷阱 當某個程序被迫中止時,會有一個退出信號,這個信號稱為一個陷阱(trap)。這樣我們可以在捕捉到退出信號時執行命令,如捕獲到退出信號1,2,3,15時退出: Trap `echo “nEXITTING on a TRAPPED SINGAL”; exit` 1 2 3 15 注意不能捕獲到kill -9.的退出信號。 15.查看用戶信息 Who 提供每個登錄用戶的用戶名、tty、登錄時間及用戶登錄地(IP) W 對who的擴展,包括作業進程時間,總用戶進程時間等,但沒有用戶登錄地信息。 Last 顯示自wtmp文件創建開始登錄過的用戶名單信息,包括登錄時間,退出時間,tty等。 16.ps命令 顯示當前系統進程的信息。 17.與用戶通信 Wall,rwall,write,talk 18.大小寫文本 用tr或typeset命令。 VALUES = “AFCDLD” Echo $VALUES | tr ‘[A-Z]’ ‘[a-z]’ #將大寫轉換成小寫;tr ‘[a-z]’ ‘[A-Z]’則小寫轉換成大寫 或 www.2cto.com 在VALUES前使用 Typeset -l VALUES #將大寫轉換成小寫;typeset -u 則小寫轉換成大寫。 19.定時運行腳本cron Crontab -e進入用戶cron表添加定時腳本,如 在1月15日星期天0:12執行腳本/usr/bin/test.sh #分(0-59) 時(0-23)日(1-31) 月(1-12) 星期(0-6for Sunday-saturday)  12 0 15 1 0 /usr/bin/test.sh 定時任務還可作用at命令。 20.輸出控制 靜默運行,即不輸出任何內容到屏幕上: 2>&1 > /dev/null 輸出到系統指定的控制台: > /dev/console 21.解析命令行參數getopts Getopts optionstring VARIABLE Optionstring 是所需的各種參數,用冒號隔開,如果不需要參數,則冒號可以省略。如果optionstring前有一個冒號,則任何未匹配到時會在VARIBLE中加載一個?號 使用getopts的作用是解析出參數,然後作用此參數做不同的操作。如: While getopts :s:m:h:d:p: TM Do Case $TM in S) Do something ;; M) Do something ;; . . . ?) Exit 1 ;; Esac 22.逐行處理文件 While read LINE Do Echo “$LINE” Done <$FILENAME 23.作用select命令創建菜單 Select menu in Yes No Quit Do Case $menu in Yes) Do something ;; No) Do something ;; Quit) Break ;; *) Do something ;; Esac done
Copyright © Linux教程網 All Rights Reserved