1、 ${} : 引用变量,还有一些其他的功能:
fname=/aa1/aa2/aa3/dd.ee.txt
#: 从左边开始找起。##就是从那一边找起的最后一个
${fname#*/} 去掉左边第一个 / 及其左边的字符串:aa1/aa2/aa3/dd.ee.txt
${fname##*/} 去掉左边最后一个 / 及其左边的字符串:dd.ee.txt
${fname#*.} 去掉左边第一个 . 及其左边的字符串:ee.txt
${fname##*.} 去掉左边最后一个 . 及其左边的字符串:txt
%:从右边开始找起。%%就是从那一边找起的最后一个
${fname%/*} 去掉右边第一个 / 及其右边的字符串:/aa1/aa2/aa3
${fname%%/*} 去掉右边最后一个 / 及其右边的字符串:(空值)
${fname%.*} 去掉右边第一个 . 及其右边的字符串:/aa1/aa2/aa3/dd.ee
${fname%%.*} 去掉右边最后一个 . 及其右边的字符串:/aa1/aa2/aa3/dd
使用冒号(:) 截取一段字符串,${str:start:length}
${fname:0:3} 截取index从0开始的 4 个字节:/aa1
${fname:4:4} 截取index从4开始的 4 个字节:/aa2
使用单斜杠(/)和双斜杠(//)对变量值里的字符串作替换
${fname/aa/folder} 将第一个 aa 替换为 folder:/folder1/aa2/aa3/dd.ee.txt
${fname//aa/folder} 将全部 aa 替换为 folder:/folder1/folder2/folder3/dd.ee.txt
使用井号(#)计算字符串的长度: ${#string}
echo ${#fname} :22
bash数组的使用:
定义数组: arr=(a b c d)
${arr[@]} 和 {arr[0]} 得到 a (第一个元素),${arr[1]} 第二个…
使用井号(#)计算数组的长度:${#arr[@]} 或 ${#arr[*]} => 4
(使用井号计算长度时,若参数为字符串则返回字符串的长度,若参数为数组则返回数组中元素的个数。)
2、$() 与 ``的作用相同,都是用来运行命令的
例如: echo echo hello
与 echo $(echo hello) 都是打印出hello。
需要注意的一点是有的shell是不支持$()的,而``则可以在所有的unix shell中使用。
3、$[] 和 $(()) 都是用来进行整数运算的
在$[] 和 $(())中进行算数运算时,变量前加不加$符号是一样的:
a=10;b=20;
echo $((a+b))
echo $[a+b]
echo $(($a+$b))
echo $[$a+$b]
以上四个的结果都是30。
$(()) 还可以将不同进制(如二进制、八进位、十六进制)的值转为十进制: $((BS#number)),BS为进制,number为数值。
例如:echo $((16#2b)) => 43 (16进制转十进制)
4、[] 主要用于字符串比较和整数比较
字符串比较时可用 == 和 != ,而整数比较时要使用 (-eq:等于;-ne:不等于;-gt:大于;-lt :小于;-ge:大于等于;-le:小于等于;)。
5、(())及[[]] 都是 [] 的加强版,在比较整数时可直接使用操作符(&&、||、<、>)
原文链接:https://blog.csdn.net/qq_23867503/article/details/94006482
来源:CSDN
作者:darling_user
链接:https://blog.csdn.net/darling_user/article/details/104473675