linux shell的一些技巧 使用{X..Y}以及${!XXX}
2017-02-18 18:45
295 查看
1、{start..end..step}
跟$(seq start end)功能一样,生成从start至end的序列,闭合区间。
step默认为1。
for i in {1..5}; do echo $i; done
>>> 1 2 3 4 5
可以在前面增加前缀,很方便的,如果使用$(seq ...)的话,达不到这种效果
for i in 6{1..5}; do echo $i; done
>>> 61 62 63 64 65
for i in 6$(seq 1 5); do echo $i; done
>>> 61 2 3 4 5 # 只跟第一个元素结合了~~
2、${!arr[@]}
用于返回数组array的所有下标
arr=(h0 h1 h2 h3)
for i in ${!arr[@]}; do echo $i; done
>>> 0 1 2 3
arr[10]=h10
for i in ${!arr[@]}; do echo $i; done
>>> 0 1 2 3 10
初始化数组arr时,数组下标是从0开始递增的,所以这里直接对arr[10]进行赋值,以空缺中间的下标,打印其下标如上。
3、${!var@}
用于返回当前shell中,变量名以var开始的变量;这种格式跟第2种很相似,可是功能却完全不同。
var1=hello1
var2=hello2
echo ${!var@}
>>> var1 var2
var=hello
echo ${!var@}
>>> var var1 var2
变量的输出,不是以定义的先后为顺序的,这一点需要注意。
4、${!var}
用于返回以var变量的值命名的变量的值,这话很难理解,其实有些类似C里面的指针,看代码就明白了。
tmp_path=/tmp
path=tmp_path
echo ${!path}
>>> /tmp
shell先将path解析出来,得到tmp_path,再取tmp_path的值,所以得到结果/tmp。
使用eval的方法稍显麻烦:
eval echo \$$path
>>> /tmp
跟$(seq start end)功能一样,生成从start至end的序列,闭合区间。
step默认为1。
for i in {1..5}; do echo $i; done
>>> 1 2 3 4 5
可以在前面增加前缀,很方便的,如果使用$(seq ...)的话,达不到这种效果
for i in 6{1..5}; do echo $i; done
>>> 61 62 63 64 65
for i in 6$(seq 1 5); do echo $i; done
>>> 61 2 3 4 5 # 只跟第一个元素结合了~~
2、${!arr[@]}
用于返回数组array的所有下标
arr=(h0 h1 h2 h3)
for i in ${!arr[@]}; do echo $i; done
>>> 0 1 2 3
arr[10]=h10
for i in ${!arr[@]}; do echo $i; done
>>> 0 1 2 3 10
初始化数组arr时,数组下标是从0开始递增的,所以这里直接对arr[10]进行赋值,以空缺中间的下标,打印其下标如上。
3、${!var@}
用于返回当前shell中,变量名以var开始的变量;这种格式跟第2种很相似,可是功能却完全不同。
var1=hello1
var2=hello2
echo ${!var@}
>>> var1 var2
var=hello
echo ${!var@}
>>> var var1 var2
变量的输出,不是以定义的先后为顺序的,这一点需要注意。
4、${!var}
用于返回以var变量的值命名的变量的值,这话很难理解,其实有些类似C里面的指针,看代码就明白了。
tmp_path=/tmp
path=tmp_path
echo ${!path}
>>> /tmp
shell先将path解析出来,得到tmp_path,再取tmp_path的值,所以得到结果/tmp。
使用eval的方法稍显麻烦:
eval echo \$$path
>>> /tmp
相关文章推荐
- linux shell的一些技巧(一)使用{X..Y}以及${!XXX}
- source insight的自动缩进 以及网上的一些使用技巧
- [前端]LocalResizeImg的使用技巧、与Struts2的结合以及一些坑点
- SQL语句的一些基本使用以及一些技巧
- Mac 使用感受以及一些技巧、工具推荐
- source insight的自动缩进 以及网上的一些使用技巧
- 介绍内容有 Android 开发规范, 架构, 布局技巧, 以及使用一些有助于快速开发相关工具等等
- 项目开发中的一些注意事项以及技巧总结 基于Repository模式设计项目架构—你可以参考的项目架构设计 Asp.Net Core中使用RSA加密 EF Core中的多对多映射如何实现? asp.net core下的如何给网站做安全设置 获取服务端https证书 Js异常捕获
- Django中admin注册的方法以及一些常用使用技巧
- source insight的自动缩进 以及网上的一些使用技巧(转)
- java 关于使用java1.8的localDateTime日期操作的基本使用以及一些使用技巧 持续更新...
- 一些使用ASP.NET和VISUAL STUDIO.NET2003的经验和技巧
- Castle ActiveRecord学习实践(9):使用ActiveRecord的一些技巧
- DataGrid和DropDownList的一些配合以及使用css定制DataGrid(转)
- 一些vi的使用技巧
- javascript的一些使用技巧
- “针式背单词”的一些使用技巧
- INFORMIX-SQL的一些使用技巧
- 一些VC的快捷键以及调试方法技巧