#每日Linux小練習#06 Shell Script知識點總結(上)

(主要內容來源於《鳥哥的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 ==> '$@'"

相關文章
相關標籤/搜索