【转】Linux Bash Shell学习笔记
0赞
发表于 9/2/2016 9:32:51 AM
阅读(2158)
参数扩展:
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