- $()、``用来作命令替换
- ${ }用来作变量替换(以下内容来自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[0]}:第一个元素
- ${#A[@]}或${#A[*]}:数组元素的个数
3. $(()) 用来做运算
$ a=5;b=7 $ echo $((a+b)) 12
4. (())可以重定义变量值
a=5; ((a++)) 可将 $a 重定义为6
shell之 $()、``、${ }、$(( ))与(()),布布扣,bubuko.com
时间: 2024-12-29 11:19:25