shell之 $()、``、${ }、$(( ))与(())
[*] $()、``用来作命令替换
[*] ${ }用来作变量替换(以下内容来自shell十三问)
(1). 变量的界定
$ A=B
$ echo $AB
该命令执行时,将AB整体看作一个变量,而不是变量$A与字母B的连接。
$ A=B
$ echo ${A}B
该命令执行后将输出:BB
(2). 特殊功能,对于字符串的处理有很大的帮助。
首先,定义变量 file=/dir1/dir2/dir3/my.file.txt,下面的命令将取得不同的值。
[*] 根据字串中包含的字符进行提取 :# 与 %
[*] ${file#*/}:去掉第一个“/”及其左边的字串 -> /dir1/dir2/dir3/my.file.txt
[*] ${file##*/}:去掉最后一个“/”及其左边的字串 ->my.file.txt
[*] ${file%/*}:去掉最后一个“/”及其右边的字串 ->/dir1/dir2/dir3
[*] ${file%%/*}:去掉第一个"/"及其右边的字串 ->空值
[*] 提取指定位置指定长度字符
[*] ${file:0:5}:提取最左边的5个字符 ->/dir1
[*] ${file:5:5}:提取第5个字符右边连续5个字符 ->/dir2
[*] 字符串替换
[*] ${file/dir/path}:将第一个dir替换为path ->/path1/dir2/dir3/my.file.txt
[*] ${file//dir/path}:将全部dir替换为path ->/path1/path2/path3/my.file.txt
[*] 计算变量值的长度:${#var}
[*] ${#file} ->27即strlen(file)
(3). 数组相关
[*]
[*] A="a b c def":变量的值为一个字串
[*] A=(a b c def):将$A定义为数组
[*]
[*] ${A[@]}或${A
[*]}:得到全部数组
[*] ${A}:第一个元素
[*] ${#A[@]}或${#A
[*]}:数组元素的个数
3. $(()) 用来做运算
$ a=5;b=7
$ echo $((a+b))
12
4. (())可以重定义变量值
a=5; ((a++)) 可将 $a 重定义为6
页:
[1]