參數擴展:
1.被名稱引用的參數稱作變量
2.被數字引用的參數稱作位置參數
3.被特定符號引用的參數具有特殊的含義和用途,被稱作Bash的特殊內部變量引用。
基本參數擴展:
字符$會引導參數擴展。大括號是可選的,但是大括號可以保護待擴展的變量,使得緊跟大括號後面的內容不會被擴展。
例:
1 $ PARAMETER 2 $ {PARAMETER} 3 #如果參數名後跟其他字符,大括號是必須的。 4 5 $ WORD=car 6 $ echo $WORDs
7 $ echo ${WORD}s 8 cars
對於$9後面的參數也是要用大括號的。
注意:參數名是大小寫敏感的。
間接參數擴展:
1 $ PARAMETER=TEMP 2 $ TEMP="It's indirect" 3 $ echo $PARAMETER 4 TEMP 5 $ echo ${!PARAMETER} 6 it's indirec
大小寫修改(Bash4.0):
1 $ echo ${PARAMETER^} 2 #將參數的第一個字符改為大寫 3 $ echo ${PARAMETER^^} 4 #將參數的全部字符改為大寫 5 $ echo ${PARAMETER,} 6 #將參數的第一個字符改為小寫 7 $ echo ${PARAMETER,,} 8 #將參數的全部字符改為小寫 9 $ echo ${PARANETER~} 10 #將參數的第一個字符改為大寫 11 $ echo ${PARANETER~~} 12 #將參數的全部字符改為大寫
大小寫修改實例:
1 # for file in *.txt 2 >do 3 >mv "$file" "${file,,}" 4 >done
變量名擴展:
1 ${!PREFIX*} 2 ${!PREFIX@} 3 #列出以字符串PREFI開頭的所有變量名
例:列出以BASH開頭的所有變量名
1 $echo ${!BASH*} 2 BASH BASHOPTS BASHPID BASH_ALIASES BASH_ARGC BASH_ARGV BASH_CMDS BASH_COMMAND BASH_LINENO BASH_SOURCE BASH_SUBSHELL BASH_VERSINFO BASH_VERSION
字符串移除:
1 ${PARAMETER#PATTERN} 2 ${PARAMETER##PATTERN} 3 #移除從參數值的開頭匹配指定模式的字符串 4 ${PARAMETER%PATTERN} 5 ${PARAMETER%%PATTERN} 6 #移除從參數值的結尾匹配指定模式的字符串 7 #”#“和”%“表示移除匹配指定模式的最短文本,”##“和”%%“表示移除匹配模式的最長文本。
字符串移除實例:
1 $ MYSTRING="This is used for removing string" 2 $ echo ${MYSTRING#* } 3 is used for removing string 4 5 $echo ${MYSTRING##* } 6 string 7 8 $echo ${MYSTRING% *} 9 This is used for removing 10 11 $echo ${MYSTRING%% *} 12 This
參數用途,提取文件名的一部分:
1 $ FILENAME=linux_bash.txt 2 3 $ echo ${FILENAME%.*} #移除文件名的後綴 4 linux_bash 5 6 $ echo ${FILENAME##*.} #移除文件名,保留後綴 7 txt 8 9 FILENAME=/home/book/linux_bash.txt 10 11 $ echo ${FILENAME%/*} #移除文件名,保留目錄名 12 /home/book 13 14 $ echo ${FILENAME##*/} #移除目錄名,保留文件名 15 linux_bash.txt
http://xxxxxx/Linuxjc/1155074.html TechArticle