1. 程式人生 > >Linux_Shell指令碼攻略學習筆記(2)1.6-1.15

Linux_Shell指令碼攻略學習筆記(2)1.6-1.15

1.6
1)陣列的類別:
a.普通陣列,索引是數字,從0開始,但是特別的是,索引可以不連續
b.關聯陣列,索引是字串
shell 中的陣列更像是key-value的感覺,就算是普通陣列,也沒有必須連續。用起來還是很方便。
2)定義陣列的方法:
a.普通陣列:

  • arr=(1 3 5)
  • arr[1]=3 arr[3]=5

b.關聯陣列:
第一步:先宣告 declare -A arr
第二步:

  • arr=([first]=‘1’ [last]=‘10’)
  • arr[first]=1 arr[second]=hello

3)陣列的特殊用法
a.訪問某一個元素:echo ${arr[1]}
b.遍歷陣列,全部列印: echo ${arr[*]} echo ${arr[@]}
c.列印陣列的長度:echo ${#arr[*]}
d.列出陣列的索引值: echo ${!arr[*]}

1.7
1)別名的定義方法:(刪除使用unalias)
alias install=‘sudo apt-get install’
2)別名的命令作用只在當前終端有效,為了長期有效,可以將其寫入 ~/.bashrc中。
echo ‘alias install=“sudo apt-get install”’ >> ~./bashrc
3)為了安全考慮,忽略別名,強制使用原命令,使用轉義符加命令:
\rm

1.8
1)tput工具
tput cols
tput lines
tput longname
tput cup 100 100
tput setb no(no在0~7之間)
tput serf no
tput bold
tput ed
2)stty工具
stty -echo 禁止輸出傳送到終端。
… stty echo

1.9
1)date的常見使用方法
a. date
Thu May 20 23:09:04 IST 2010
b. date +%s 列印紀元時
1290047248
c. date -d “Jan 20 2001” +%A 獲取指定日期星期幾
Saturday
2)延時命令
sleep 100 延時100s

1.10
除錯指令碼,將#!/bin/bash —> #!/bin/bash -xv 即可使用除錯功能。

1.11
1)定義函式
a.
function fname()
{
statements;
}

b.
fname()
{
statements;
}

2)執行函式
a.fname;
b.帶引數的呼叫函式
fname arg1 arg2;

3)函式中使用入參
echo $1; #訪問第一個引數
echo “[email protected]” 一次性列印所有引數

4)匯出函式
export -f fname

5)讀取命令或者函式的返回值
echo $?

1.12
1)管道 ” | “,前者的輸出作為後者的輸入。
ls | cat -n > out.txt
2)讀取命令的輸出
a.子shell ouput=$(ls | cat -n)
如果需要保留換行和空格,需要使用雙引號。 output="$(ls | cat -n)"
b.反引用 output=`ls | cat -n`
3)子shell可以作為一個獨立的程序,不干擾主程序
pwd;
(cd /bin; ls;)
pwd;

1.13
1)讀取標準輸入命令: read
2)可以指定讀取的字元個數,而不需要使用額外按回車
read -n 2 var
3)其他用法
read -s var #不回顯,常用於密碼
read -p “Enter input:” var #顯示提示資訊
read -t timeout var #設定限時
read -d “:” var #設定定界符,以該符號結束輸入。

1.14
1)IFS預設是空格、製表位、換行符
修改IFS,可以通過迭代,自動分割各個元素
data=“name,sex,rollno locatioin”
IFS="," #以逗號作為定界符
for item in $data
do
echo item: $item
done

2)for 迴圈
for item in list #list可以是string或者是序列,序列的方法:{1…50} {a…z} {A…H}
do
commands
done

3)while迴圈
while condition
do
commands
done

4)until迴圈
直到為真,才停止迴圈
until condition
do
commands
done

1.15
1)條件語句
if condition
then
commands
fi
或者
if condition
then
commands
elif condition
then
commands
else
commands
fi
2)算數比較符號
-eq 等於
-ne 不等於
-gt 大於
-lt 小於
-ge 大於等於
-le 小於等於

3)檔案測試
對檔案/目錄是否可讀、可寫、是否存在等做判斷
4)字串比較
[[ $str1 == $str2]]
特殊的:
空字串返回真 [[ -z $str1 ]]
非空返回真: [[ -n $str2 ]]