你的位置:首页 > 操作系统

[操作系统]Linux Bash Shell学习笔记


参数扩展:


1.被名称引用的参数称作变量
2.被数字引用的参数称作位置参数
3.被特定符号引用的参数具有特殊的含义和用途,被称作Bash的特殊内部变量引用。

基本参数扩展:
字符$会引导参数扩展。大括号是可选的,但是大括号可以保护待扩展的变量,使得紧跟大括号后面的内容不会被扩展。
例:

1 $ PARAMETER2 $ {PARAMETER}3 #如果参数名后跟其他字符,大括号是必须的。4 5 $ WORD=car6 $ echo $WORDs
7 $ echo ${WORD}s8 cars

 

 对于$9后面的参数也是要用大括号的。
注意:参数名是大小写敏感的。

间接参数扩展:

1 $ PARAMETER=TEMP2 $ TEMP="It's indirect"3 $ echo $PARAMETER4  TEMP5 $ 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 *.txt2 >do3 >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 removing10 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.txt10 11 $ echo ${FILENAME%/*}           #移除文件名,保留目录名12 /home/book13 14 $ echo ${FILENAME##*/}          #移除目录名,保留文件名15 linux_bash.txt