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的一些小技巧相关推荐

  1. 每日Ubuntu小技巧-改变登陆窗口背景

    本文为你提供了一个简单的小技巧,告诉你如何用你自己图片来替换登陆窗口的背景.Ubuntu的登陆窗口挺不错的,可能比大多数发行版的都要好,但是如果你想要使用一张你自己的图片,比如一张可以让你回忆起某个特 ...

  2. 6行代码,带你学会Python最有用的小技巧【收藏不后悔】

    这篇博文主要介绍了Python有关的代码片段,通过简洁易懂的代码,给一些基础不是特别好的朋友提供便利,有利于学习,仅提供了几种小技巧的方法,希望对你们有帮助. 一.将 Python 3 和 pip 3 ...

  3. 小技巧 | 使用 mv 重命名文件无需两次键入文件名称

    使用过 Bash 的童鞋都知道 mv 是一个可以用于文件改名的命令,而且使用这个命令修改文件名时我们需要输入两次文件名(旧名字和新名字). 如果有一种情况是只需要你改动文件名中的一个字母,而文件名又特 ...

  4. Linux Shell Tips小技巧

    文章目录 sed 指定行 删除文本 替换文本 小技巧 查找N天内修改文件 Shell写R语言 makefile写shell bad interpreter错误 替换换行符为空格 压缩并打包目录 重定向 ...

  5. 编写可靠bash脚本的一些技巧

    编写可靠bash脚本的一些技巧 原作者:腾讯技术工程 原文链接:https://zhuanlan.zhihu.com/p/123989641 写过很多 bash 脚本的人都知道,bash 的坑不是一般 ...

  6. 清空linux+history_1分钟学会的Linux小技巧,大大提高你的工作效率

    前言 Linux中的一些小技巧可以大大提高你的工作效率,本文就细数那些提高效率或者简单却有效的Linux技巧. 作者介绍:守望,一名好文学,好技术的开发者.在个人公众号[编程珠玑(ID:shouwan ...

  7. 安装环境及Git小技巧

    深度学习环境安装及Git小技巧 以下记录一些命令,针对pytorch安装的一些小技巧. 1.命令 查看镜像源通道 conda config --show channels 添加镜像源通道 conda ...

  8. linux执行命令带时间戳,Linux查看History记录加时间戳的小技巧

    Linux查看History记录加时间戳小技巧 熟悉bash的都一定知道使用history可以输出你曾经输入过的历史命令,例如[root@servyou_web ~]# history | more ...

  9. SHELL TIPS: GNU SCREEN 的一些小技巧

    SHELL TIPS: GNU SCREEN 的一些小技巧 2010-07-22 由于工作环境的问题,最近越来越感觉到 screen 命令的可贵,下面总结一点使用 screen 命令的小技巧. 最常用 ...

最新文章

  1. 06-密码学基础-混合密码系统
  2. 一台电脑怎么接两个显示器_电脑数码类目显示器 篇二:11.11抄作业,个人消费级显示器怎么选--20款好价显示器推荐_显示器...
  3. vGPU作为主流平台的进化之路
  4. [html] 怎样使用iframe刷新父级页面?
  5. macos系统自动安装mysql_macos系统安装mysql
  6. Openfire开发配置,Openfire源码配置,OpenFire二次开发配置
  7. Rabbitmq 1.消息如何保障 100%投递成功?
  8. 所有ghost操作系统大全
  9. 怎么改自己手机的ip地址
  10. 1386 - Cellular Automaton
  11. 原创 和Taskmgr过不去篇(无厘头版)
  12. android二维码图片生成模糊的问题
  13. Feature Selective Anchor-Free(FSAF)
  14. 豆瓣 API ( 解决104问题 )
  15. 根据TXT文件中的文件名复制文件
  16. 洛谷题目P1425 小鱼的游泳时间
  17. SAP CRM 如何高效debug 查看BOL的值
  18. 超融合的网络bond和bridge模式。kvm+bond+bridge
  19. 业务系统(HANA/SAP/OA/ERP/OA)
  20. 2021年氯化工艺报名考试及氯化工艺考试内容

热门文章

  1. 项目开发中的编码规范
  2. 剑指offer:39-42记录
  3. leetcode238 除本身以外数组的乘积
  4. 数组精选题目三连(6)
  5. MySQL关键字EXPLAIN的用法及其案例
  6. STL源码剖析 基本算法 < stl_algobase.h >
  7. 计算机操作系统读者和写者模型的简单介绍以及思考
  8. Android设计模式之——命令模式
  9. 历史上最有影响力的10款开源项目
  10. 什么是程序员正确的职场心态?