undertone & excelence
分类: LINUX
2014-08-04 11:23:52
变量的测试和变量替换。A新变量,B旧变量,C更新内容
A=${B-C} 判断B是否有赋值,无则赋新值(A=C) A=${B:-C}判断B值空否?
A=${B+C} 判断B是否有赋值,有则赋新值(A=C) A=${B:+C}判断B值空否?
A=${B=C} 判断B是否有赋值,无则更新A和B的值(A=C,B=C) A=${B:=C}判断B值空否?
A=${B?C} 判断B是否有赋值,无则输出错误到stderr A=${B:?C}判断B值空否?
变量的截取:
${var:A:B} 从左起第A个字符开始(首字符为第0),提取B个字符。eg:var=12345 ${var:3:2}的值是45
${var:X} X表示从左边去掉的字符数 eg:var=12345 ${var:3}的值是45
从右边开始的情况:
${var:0-A:B} 从右边数起的第A个字符截取(尾字符为第1),截取长度为B个(往右)。
eg:var=012345 ${var:0-3:2}值为34
${var:0-X} 表示从倒数第X个开始截取右边的所有字符。 eg:${var:0-3}的值是345
关键字截取和替换:
${PATH##*:} #号表示从左边切掉,##表示贪婪模式,切掉以任意字符(*)开头,分号结尾掉部分。结果显示PATH变量掉醉汉哦/bin
${PATH%%:*} %表示从右边开始切掉。%%表示贪婪模式。切掉以任意字符(*)结尾,分号开头掉部分。结果显示PATH的第一个条路径
${PATH//:/ | } /str/str 表示替换,//str/str表示以贪婪模式替换。
小知识
(()) 可以做大小比较的运算或者是自加自减的运算,eg: ((A++)) ((A返回值
${#var}返回变量长度。((2**3))的值为8,**表示次方运算
变量简写:
“矩阵变量”简写:eg: mkdir {A,B,C}-{1,2,3} 将会建立9个目录。
特殊变量:
$# 变量个数
$@ 全部变量(分隔符隔开)
$* 变量的整体
$$ 执行程序的PID值
文件删除复制中的通配符:
rm [c-e] 会匹配 c、d、e三个文件。等价于 rm {c,d,e}
rm [c-d]* 会匹配 c、d和以c和d开头的文件
rm [c-d]?? 匹配c和d开头的,文件名是三个字符的文件。
rm [a-z]等价于rm [[:lower:]]
rm [a-c]不等价于rm “[a-c]”(双引号括起,将会匹配[a-c]这个文件名,而非a、b、c三个文件。单引号亦然。)
注意rm不适合RE表达式。