前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >linux shell中使用{X..Y}以及${!XXX}

linux shell中使用{X..Y}以及${!XXX}

作者头像
PedroQin
发布2019-12-18 11:20:52
7040
发布2019-12-18 11:20:52
举报
文章被收录于专栏:WriteSimpleDemo

1、{start..end..step}

$(seq start end)功能一样,生成从start至end的序列,闭合区间。 step默认为1。

代码语言:javascript
复制
admin@Unas:/$ for i in {1..5..1};do echo $i;done
1
2
3
4
5

另类玩法:

代码语言:javascript
复制
admin@Unas:/$ for i in 6{1..5};do echo $i;done
61
62
63
64
65

2、${!arr[@]}

用于返回数组array的所有下标

代码语言:javascript
复制
admin@Unas:/$ test=(test1 test2 test3 test4)
admin@Unas:/$ for i in ${!arr[@]};do echo $i ;done
admin@Unas:/$ for i in ${!test[@]};do echo $i ;done
0
1
2
3
admin@Unas:/$ test[6]=test10
admin@Unas:/$ for i in ${!test[@]};do echo $i ;done
0
1
2
3
6

3、${!var@}

与第2种写法很相似,但功能完全不同。 用于返回当前shell中,变量名以var开始的变量

应用场景:

代码语言:javascript
复制
admin@Unas:/$ test1=Gary
admin@Unas:/$ test2=Pedro
admin@Unas:/$ test3=Cheryl
admin@Unas:/$ echo ${!test@}
test1 test2 test3

变量的输出,不是以定义的先后为顺序的,这一点需要注意。

4、${!var}

用于返回以var变量的值命名的变量的值类似C语言的指针

应用场景:一个dimm数组中包含所有 dimm slot 名称:

代码语言:javascript
复制
dimm=(DIMM_A1 DIMM_B1 DIMM_C1)

又以 dimm slot 名称为变量名保存对应slot位置dimm信息:

代码语言:javascript
复制
DIMM_A1="2400 MHz-32 G"
DIMM_B1="2400 MHz-32 G"
DIMM_C1="2400 MHz-32 G"

现在我循环遍历dimm数组,输出所有dimm信息。 传统方法:

代码语言:javascript
复制
admin@Unas:/$ for i in ${!dimm[@]};do echo ${dimm[i]} ;done
DIMM_A1
DIMM_B1
DIMM_C1
admin@Unas:/$ for i in ${!dimm[@]};do eval echo \$${dimm[i]} ;done
2400 MHz-32 G
2400 MHz-32 G
2400 MHz-32 G

使用${!var}方法:

代码语言:javascript
复制
admin@Unas:/$ for i in ${!dimm[@]};do echo ${!dimm[i]} ;done
2400 MHz-32 G
2400 MHz-32 G
2400 MHz-32 G

var=(test1 test2 test3)时,${#var[@]}值为? 当var="+++asdasd---"时,${#var}${var##*asd}${var#*asd}${var%%asd*}${var%asd*}${var/asd/qwe}${var//asd/qwe}值为?

虽然我们交付了V2版本,

但用户仍然使用V1版本时 o(╯□╰)o

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-03-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WriteSimpleDemo 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、{start..end..step}
  • 2、${!arr[@]}
  • 3、${!var@}
  • 4、${!var}
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档