bash的一些小技巧
1、从输入读入变量
eg:read -ep "input yes or no: " flag
用e选项表示编辑,可以使用backspace删除
2、数组
a、索引数组
declare -a arr=(var1 var2 var3) 用空格分割,如果直接访问变量$arr,
则获取的是数组的第一个元素,访问要是用${arr[idx]}来。
也可声明数组后再赋值,即declare -a arr;arr[0]=var1;arr[1]=var2;arr[3]=var3
如下:
获取所有数组元素把索引换为@,获取数组长度则要在获取所有数组的变量前加#
如下:
b、关联数组
关联数组把-a,换为-A即可,其它和索引数组类似,但是直接访问变量将没有输出。
这也好理解,因为没有第一个元素的概念了,而且可以看到获取所有key对应的值时,也是没有顺序的。
3、字符串转变量
使用eval命令求值
eval可以用返回值存储变量,这就有可以和关联数组,实现比较好玩的东西了。
4、多维数组
declare -A map1=([key1]=a1[key2]=b1)declare -A map2=([key1]=a2[key2]=b2 )declare -a arr=(map1 map2)
如果这时候想获取数组arr里的第一个元素的key1值,估计大家会想到
tmp=${arr[0]};echo ${tmp[key1]}
然而输出的是map1,因为map1只是个字符串,并不是指向$map1变量。
于是可能会想到,这么修改,declare -a arr=($map1 $map2),可是结果是什么也没输出。
后来我找了一些资料,也没找到解决的方法。或许是bash不支持。
让我们用eval来试试。
eval tmp="\${map1[key1]}";echo $tmp;
\$表示转义,即不要当变量解析,可以看到成功输出a1。
那么我们把map1构造出来,${arr[0]}即map1,完整如下:
eval tmp="\${${arr[0]}[key1]}";echo $tmp
那么我们就可以在循环里做些事情了:
declare -A map1=([key1]=a1[key2]=b1)declare -A map2=([key1]=a2[key2]=b2 )declare -a arr=(map1 map2)for var in ${arr[@]}; doeval tmp="\${$var[key1]}"echo $tmpdone
这里的$var即数组arr里的元素,可以看到成功的输出了预期值:
bash的一些小技巧相关推荐
- 每日Ubuntu小技巧-改变登陆窗口背景
本文为你提供了一个简单的小技巧,告诉你如何用你自己图片来替换登陆窗口的背景.Ubuntu的登陆窗口挺不错的,可能比大多数发行版的都要好,但是如果你想要使用一张你自己的图片,比如一张可以让你回忆起某个特 ...
- 6行代码,带你学会Python最有用的小技巧【收藏不后悔】
这篇博文主要介绍了Python有关的代码片段,通过简洁易懂的代码,给一些基础不是特别好的朋友提供便利,有利于学习,仅提供了几种小技巧的方法,希望对你们有帮助. 一.将 Python 3 和 pip 3 ...
- 小技巧 | 使用 mv 重命名文件无需两次键入文件名称
使用过 Bash 的童鞋都知道 mv 是一个可以用于文件改名的命令,而且使用这个命令修改文件名时我们需要输入两次文件名(旧名字和新名字). 如果有一种情况是只需要你改动文件名中的一个字母,而文件名又特 ...
- Linux Shell Tips小技巧
文章目录 sed 指定行 删除文本 替换文本 小技巧 查找N天内修改文件 Shell写R语言 makefile写shell bad interpreter错误 替换换行符为空格 压缩并打包目录 重定向 ...
- 编写可靠bash脚本的一些技巧
编写可靠bash脚本的一些技巧 原作者:腾讯技术工程 原文链接:https://zhuanlan.zhihu.com/p/123989641 写过很多 bash 脚本的人都知道,bash 的坑不是一般 ...
- 清空linux+history_1分钟学会的Linux小技巧,大大提高你的工作效率
前言 Linux中的一些小技巧可以大大提高你的工作效率,本文就细数那些提高效率或者简单却有效的Linux技巧. 作者介绍:守望,一名好文学,好技术的开发者.在个人公众号[编程珠玑(ID:shouwan ...
- 安装环境及Git小技巧
深度学习环境安装及Git小技巧 以下记录一些命令,针对pytorch安装的一些小技巧. 1.命令 查看镜像源通道 conda config --show channels 添加镜像源通道 conda ...
- linux执行命令带时间戳,Linux查看History记录加时间戳的小技巧
Linux查看History记录加时间戳小技巧 熟悉bash的都一定知道使用history可以输出你曾经输入过的历史命令,例如[root@servyou_web ~]# history | more ...
- SHELL TIPS: GNU SCREEN 的一些小技巧
SHELL TIPS: GNU SCREEN 的一些小技巧 2010-07-22 由于工作环境的问题,最近越来越感觉到 screen 命令的可贵,下面总结一点使用 screen 命令的小技巧. 最常用 ...
最新文章
- 06-密码学基础-混合密码系统
- 一台电脑怎么接两个显示器_电脑数码类目显示器 篇二:11.11抄作业,个人消费级显示器怎么选--20款好价显示器推荐_显示器...
- vGPU作为主流平台的进化之路
- [html] 怎样使用iframe刷新父级页面?
- macos系统自动安装mysql_macos系统安装mysql
- Openfire开发配置,Openfire源码配置,OpenFire二次开发配置
- Rabbitmq 1.消息如何保障 100%投递成功?
- 所有ghost操作系统大全
- 怎么改自己手机的ip地址
- 1386 - Cellular Automaton
- 原创 和Taskmgr过不去篇(无厘头版)
- android二维码图片生成模糊的问题
- Feature Selective Anchor-Free(FSAF)
- 豆瓣 API ( 解决104问题 )
- 根据TXT文件中的文件名复制文件
- 洛谷题目P1425 小鱼的游泳时间
- SAP CRM 如何高效debug 查看BOL的值
- 超融合的网络bond和bridge模式。kvm+bond+bridge
- 业务系统(HANA/SAP/OA/ERP/OA)
- 2021年氯化工艺报名考试及氯化工艺考试内容