1. 程式人生 > >Linux Shell(一):建立指令碼,變數、字串、陣列、輸入輸出

Linux Shell(一):建立指令碼,變數、字串、陣列、輸入輸出

0.建立一個Shell指令碼:

vim abc.sh

1.首行宣告所使用的shell:

#!/bin/bash

#!是一個特殊的識別符號,其後,跟著解釋此指令碼的shell路徑。

bash只是shell的一種,還有很多其它shell,如:sh,csh,ksh,tcsh,...

預設使用bash

2.為指令碼增加可執行許可權:

chmod u+x abc.sh

3.Shell 變數:

定義變數:a='Hello World'

使用變數: echo ${a}

只讀變數:readonly a

刪除變數:unset a

4.Shell字串:

單引號字串:

單引號裡的任何字元都會原樣輸出,單引號字串中的變數是無效的。

單引號字串中不能出現單引號(對單引號使用轉義符後也不行)。

雙引號字串:

雙引號裡可以有變數。

雙引號裡可以出現轉義字元。

獲取字串長度:echo ${#a}

5.Shell陣列:

定義陣列:

①bb=(s d f g h)

bb=(

s

d

f

g

h

)

②bb[0]=s

bb[1]=d

bb[2]=f

bb[3]=g

bb[4]=h

使用陣列:

echo ${bb[0]}

使用 @ 符號可以獲取陣列中的所有元素:

echo ${bb[@]}

獲取陣列長度:

${#bb[@]}

${#bb[*]}

獲取陣列單個元素長度:

${#bb[n]}

6.輸入輸出:

輸出到螢幕:echo ‘Hello World’

輸出到檔案:ll > aaa.txt

獲取使用者輸入:

echo -n "enter your name:"

read name

-n選項,用於允許使用者在字串後面立即輸入資料,而不是在下一行輸入。

read -p "please enter your age:" age

-p選項,允許在read命令列中直接指定一個提示。

age與前面必須有空格。

從檔案讀取:--

7.計時

read

-t選項指定read命令等待輸入的秒數。當計時器計時數滿時,read命令返回一個非零退出狀態

[[email protected]

~]# cat t11.sh

#!/bin/bash

if read -t 5 -p "please enter your name:" name

then

echo "hello $name ,welcome to my script"

else

echo "sorry ,tow slow!"

fi

8.默讀

read

有時候需要指令碼使用者進行輸入,但不希望輸入的資料顯示在監視器上,(實際上是顯示的只是read命令將文字顏色設定為與背景相同的了)。

[[email protected] ~]# cat t12.sh

#!/bin/bash

read -s -p "enter your password:" pass

echo "is your password really $pass?"

9.讀寫檔案

read

每呼叫一次read命令都會讀取檔案中的一行文字,當檔案中沒有可讀的行時,read命令將以非零退出狀態退出。

#!/bin/bash

count=1

cat test | while read line

do

echo "line $count:$line"

count=$[$count + 1]

done