首页 > 代码库 > shell之 $()、``、${ }、$(( ))与(())
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[0]}:第一个元素
${#A[@]}或${#A[*]}:数组元素的个数
3. $(()) 用来做运算
$ a=5;b=7 $ echo $((a+b)) 12
4. (())可以重定义变量值
a=5; ((a++)) 可将 $a 重定义为6
本文出自 “linux” 博客,请务必保留此出处http://4983206.blog.51cto.com/4973206/1436474