- #!/bin/bash
- #測試變量存在與否的基本用法
- #DEBUG=1
- [ -n ${DEBUG-'0'} ] && set -v
- #定義兩個變量,用hostname擷取目前主機名
- myhostname=$(hostname)
- myhostip=
- mydir=
- msge=
- msgg=msggisok
- #取消變量myhostip
- unset myhostip
- #變量引用,文法${待測變量-預設值},若變量不存在,則符合判斷,以傳回預設值作為處置
- #此處變量myhostname變量存在,故不顯示data,myhostip變量前面已經取消,故顯示’ip is not exist‘
- a=${myhostname-'data'}
- b=${myhostip-'"ip is not exist"'}
- #此處由于前面$mydir定義為空,值存在,故不傳回預設值
- c=${mydir-'dir is null'}
- #此處的$count變量不存在,用=設定值為100
- d=${count:=100}
- #“-”變量不存在,就顯示預設值
- e=${msge:-'變量不存在'}
- f=${msgf-:msg2}
- #變量存在,就顯示真實的值
- g=${msgg:+真實值}
- echo $a $b $c $d $e $f $g
- #變量不存在,就顯示錯誤,并顯示設定的預設值
- z=${msgz:?msgz}
- #!/bin/bash
- NETWORK_PATH=$(/bin/ls /etc/rc.d/init.d/network)
- echo ${NETWORK_PATH}
- echo -e '文法${變量:位置起點},此處用":2"'
- network=${NETWORK_PATH:2}
- echo ${network}
- NETWORK_PATH2=$(/bin/ls /etc/rc.d/init.d/network)
- echo ${NETWORK_PATH2}
- echo -e '文法${變量:位置起點:長度}, 此處用"2:4"'
- network2=${NETWORK_PATH2:2:4}
- echo ${network2}
- #!/bin/bash
- #顯示指令的本身
- echo $0
- #顯示第二個輸入
- echo ${@:1}
- echo ${@:2}
- echo ${@:3}
- echo ${@:4}
- echo ${@:5}
- echo ${@:3:2}
- A=abcd
- echo ${#A}
- #!/bin/bash
- file=$(/bin/ls /etc/rc.d/init.d/network)
- echo $file
- echo "\${變量#樣式},由前面開始,删除最短比對的字元串"
- a=${file#/*/}
- echo $a
- echo "\${變量##樣式},由前面開始,删除最長比對的字元串"
- b=${file##/*/}
- echo $b
- echo "\${變量%樣式},由前面開始,删除最短比對的字元串"
- c=${file%/*}
- echo $c
- echo "\${變量%%樣式},由前面開始,删除最長比對字元串"
- d=${file%%/*}
- echo $d
- echo "\${變量/樣式/替換字元串},替換第一個比對的字元串"
- e=${file/d/NEW_WORLD}
- echo $e
- echo "\${變量//樣式/替換字元串},替換所有比對的字元串"
- f=${file//d/NEW_WORLD}
- echo $f
- echo "\${變量/樣式/},删除第一個符合樣式的字元串"
- g=${file/./}
- echo $g
- echo "\${變量//樣式/},删除所有符合樣式的字元串"
- h=${file//./}
- echo $h
- echo "\${變量/#樣式/},删除開頭第一個符合樣式的字元串"
- i=${file/#\//}
- echo $i
- I="AB,cd,ABCDAB"
- echo $I
- echo "\${變量/%樣式/},删除結尾第一個符合樣式的字元串"
- j=${I/%AB/}
- #擷取變量名稱清單
- AB='abcd'
- ABCD='efghi'
- echo $AB $ABCD
- dir_file="$AB$ABCD"
- echo "${!開頭字元串@},把是以指定字元串開頭的變量名稱列出"
- echo ${!AB@}
- #擷取數組索引清單
- NUM=(a b c d e f g)
- echo "${!數組變量[@],把數組變量的所有索引列出來}"
- k=${!NUM[@]}
- echo $k
- for i in "${!NUM[@]}"
- do
- echo "num $i:${NUM[$i]}"
- done
- #!/bin/bash
- PASSWD_PATH=$(ls /etc/passwd)
- PATH=${PASSWD_PATH:+'OK'}
- echo $PATH
- #!/bin/bash
- PS3="請選擇:"
- select A in a b c d
- do
- echo $A $REPLY
- break
- done
- 三目運算
- a=1
- b=2
- echo $(($a==$b?0:1)) #顯示結果為1
- echo $(($a!=$b?0:1)) #顯示結果為0