阿小信大人的头像
Talk is cheap. Show me the code. Linus Torvalds

shell高级变量2014-09-02 05:11

变量

${变量名}

$(命令)

${待测变量:-替换值} 判断变量是否不存在或者为空(冒号) 成立则返回替换值

${待测变量:=替换值} 判断变量是否不存在或者为空(冒号) 成立则赋值为替换值

${待测变量:?错误信息} 判断变量是否不存在或者为空(冒号) 成立则赋值为替换值

${待测变量:+替换值} 判断变量是否存在或者非空(冒号) 成立则返回替换值

切片

${变量:位置起始点}

${变量:位置起始点:长度}

取部分位置参数

${@:1}

计算字符串长度

${#str}

expr length "字符串"

对比样式,删除相符的

${变量#样式}:由前面开始,最短删除

${变量##样式}:由前面开始,最长删除

${变量%样式}:由后面开始,最短删除

${变量%%样式}:由后面开始,最长删除

取代或删除部分字符串

只替换第一个符合的:${变量/样式/替换字符串}

替换全部符合的:${变量//样式/替换字符串}

只匹配行首:${变量/#样式/替换字符串}

只匹配行末:${变量/%样式/替换字符串}

删除:不加替换字符串表示删除

列出指定字符串开头的变量名列表

${!开头字符串@},${!开头字符串*}

数组索引列表

${!数组变量[@]},${!数组变量[*]}

算术拓展

$((算术式))

expr 算术式

$[算术式]

declare -i 变量=算术式

let 算术式

算术式中如果值不存在或者为空,则默认为0

不同进制的数字可使用“基底#数字”表示

let 表达式加空格必须为表达式加引号

let "i = i + 5"

查找文件中的关键字:

grep -q "keyword" filename

返回命令结果的相反值:

! 空格 命令

[ 判断式 ] && 指令1 || 指令2 等价于 A?B:C

在 [[ ]] 和 (()) 中表达式不用转义符

高级样式

@(样式串行) : 如果符合括号里样式串行的其中一个就算对比符合

!(样式串行) :只要不出现在括号中就算对比符合

eg:

read name
case $name in
      j@(ay|oin|uly|oe) echo "good";;
      *) echo "nice";;
esac

如果您觉得从我的分享中得到了帮助,并且希望我的博客持续发展下去,请点击支付宝捐赠,谢谢!

若非特别声明,文章均为阿小信的个人笔记,转载请注明出处。文章如有侵权内容,请联系我,我会及时删除。

#Linux/Mac#   #shell
分享到:
阅读[1331] 评论[0]

你可能也感兴趣的文章推荐

本文最近访客

发表评论