(主要內容來源於《鳥哥的Linux私房菜》)正則表達式
【shell script優缺點分析】shell
shell 使用的是外部的命令 與bash shell的一些默認工具,因此,它經常調用外部的函數庫,所以,命令週期上面比不上傳統的程序語言。bash
因此,Shell Script用在系統管理上面是很好的,可是在處理大量數值計算時,速度較慢。函數
【shell script編寫的注意事項】工具
一、若是一行內容太多,則可使用 \[Enter] 來擴展至下一行測試
二、# 能夠做爲批註spa
【如何執行Script】code
一、直接命令執行(要具備可讀可執行的權限)blog
絕對路徑,相對路徑,變量PATH功能(例如 ~/bin/)進程
二、以bash進程執行
好比bash shell.sh, sh shell.sh, source shell.sh
【熟悉一下Scipt】
echo -e "I will use 'touch' command to create 3 files" read -p "Please input your filename" fileuser filename=${fileuser:-"filename"} date1=$(date --date='2 days ago' +%Y%m%d) date2=$(date --date='1 days ago' +%Y%m%d) date3=$(date +%Y%m%d) file1=${filename}${date1} file2=${filename}${date2} file3=${filename}${date3} touch "$file1" touch "$file2" touch "$file3"
一、read的基本用法
二、date1=$(date --date='2 days ago' +%Y%m%d) ,使用$()中的命令取得信息
三、filename=${fileuser:-"filename"}涉及了「變量的測試與內容替換」
echo -e "You should input 2 numbers, I will cross them" read -p "first number: " firstNumber read -p "second number: " secondNumber total=$(($firstNumber*$secondNumber)) echo -e "\n The result of $firstNumber X $secondNumber is ==> $total"
一、var=$((運算內容))
【善用判斷式】
一、test命令
echo -e "Please input a filename, I will check the filename's type and \ permission.\n\n" read -p "Input a filename : " filename test -z $filename && echo "You must input a filename." && exit 0 test ! -e $filename && echo "The filename '$filename' do not exist" && exit 0 test -f $filename && filetype="regular file" test -d $filename && filetype="directory" test -r $filename && perm="readable" test -w $filename && perm="$perm writable" test -x $filename && perm="$perm executable" echo "The filename:'$filename' is a $filetype" echo "And the permissions are : $perm"
二、判斷符號[]
利用[]來進行數據的判斷。
有如下一些注意點:
1)中括號內的每一個組件都須要有空格鍵來分隔
因爲中括號用在不少地方,包括通配符,正則表達式等,因此若是要在bash的語法中使用中括號做爲shell的判斷式時,必需要注意中括號兩端須要有空格符來分隔。
2)在中括號內的變量,最好都以雙引號括起來
3)在中括號內的常量,最好都以單引號或者雙引號括起來
關於2,3兩點,舉個例子
沒有加上雙引號,就報錯了。
由於,$name 會被替換爲 wu qi,而後上面的表達式就變爲
[ wu qi == "wu qi"]
天然就會報錯「too many arguments」
【scriptd的默認變量】
$0 | 執行的腳本文件名 |
$1 | 執行的腳本後面緊跟的第一個參數 |
$2 | 執行的腳本後面緊跟的第二個參數 |
$# | 執行的腳本後面緊跟的參數的個數(不包括$0) |
$@ | "$1"、"$2"、"$3",每一個變量是獨立的(用雙引號括起來) |
$* | ""$1c$2c$3"",其中c爲分隔字符,默認爲空格,因此本例中表明""$1 $2 $3"" |
shift:形成參數變量號碼偏移
看個例子吧
echo "************************************* " echo "************************************* " echo "Show the effect of shift function" echo "Total parameter number is ==> $#" echo "Your whole parameter is ==> '$@'" shift echo "Total parameter number is ==> $#" echo "Your whole parameter is ==> '$@'" shift 4 echo "Total parameter number is ==> $#" echo "Your whole parameter is ==> '$@'"