跟$(seq start end)
功能一样,生成从start至end的序列,闭合区间。
step默认为1。
admin@Unas:/$ for i in {1..5..1};do echo $i;done
1
2
3
4
5
另类玩法:
admin@Unas:/$ for i in 6{1..5};do echo $i;done
61
62
63
64
65
用于返回数组array的所有下标
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
与第2种写法很相似,但功能完全不同。 用于返回当前shell中,变量名以var开始的变量
应用场景:
admin@Unas:/$ test1=Gary
admin@Unas:/$ test2=Pedro
admin@Unas:/$ test3=Cheryl
admin@Unas:/$ echo ${!test@}
test1 test2 test3
变量的输出,不是以定义的先后为顺序的,这一点需要注意。
用于返回以var变量的值命名的变量的值,类似C语言的指针
应用场景:一个dimm
数组中包含所有 dimm slot 名称:
dimm=(DIMM_A1 DIMM_B1 DIMM_C1)
又以 dimm slot 名称为变量名保存对应slot位置dimm信息:
DIMM_A1="2400 MHz-32 G"
DIMM_B1="2400 MHz-32 G"
DIMM_C1="2400 MHz-32 G"
现在我循环遍历dimm
数组,输出所有dimm信息。
传统方法:
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}
方法:
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
本文分享自 WriteSimpleDemo 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!