0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

shell脚本基础知识汇总3

jf_78858299 来源:阿Q正砖 作者:阿Q正砖 2023-02-15 10:49 次阅读

1.7 关联数组

关联数组定义

Bash 支持关联数组,可以使用任意的字符串、或者整数作为下标来访问数组元素。与其他语言中的map是类似的,它是无序的。

关联数组使用 declare -A命令来声明,语法格式如下:

declare -A map=(["key1"]="value1" ["key2"]="value2")

索引数组一样,也支持指定key赋值,示例如下:

declare -A map=(["key1"]="value1" ["key2"]="value2")


declare -A map2
map2["key3"]="value3"


# 获取指定key的值
echo ${map["key1"]}
# 获取关联数组的所有键
echo ${!map[*]}


echo ${map[*]}

获取关联数组长度

同获取字符串长度一样,也是通过${#variable_name}方式获取,示例如下:

declare -A map=(["key1"]="value1" ["key2"]="value2")
#获取关联数组长度
echo ${#map[*]}


# 输出结果
2

获取key与value

通过${map[key]}方式获取指定key的值,通过${map[*]}获取所有的值,通过${!map[*]}获取所有的键,示例如下:

map=(["key1"]="value1" ["key2"]="value2")
# 获取指定key的值
echo ${map["key1"]}
echo ${map[*]}
echo ${!map[*]}


# 输出结果
value1
value2 value1
key2 key1

1.8 流程控制

If else

判断某个条件成立或者不成立时要执行的动作,中间的elif 和else都是可选,格式如下:

if condition1; then
    command1 
elif condition2; then
    command2
else
    command3
fi

常见的判断操作符如下:

文件/目录 -f 文件是否存在
-d 目录是否存在
-x 文件存在且可执行
-r 文件存在且可读
-w 文件存在且可写
字符串 -z 字符串为空
-n 字符串不为空
= 字符串相等
!= 字符串不相等
=~ 字符串包含
数字比较 -eq 相等
-ne 不相等
-lt 小于
-le 小于等于
-gt 大于
-ge 大于等于

if使用示例如下:

# 判断文件是否存在
if [ -f ~/.bashrc ]; then 
    echo "~/.bashrc exist"
fi
# 判断字符串是否为空
if [ -z $str ];then
    echo "str is empty"
else
    echo "str is not empty"
fi
# 数字大小判断
if [ "$var" -eq 1 ];then
    echo "var equal 1"
elif [ "$var" -gt 4 ];then
    echo "var great than 4"
else
    echo "other case"
fi

for 循环

for循环格式如下,item列表值可以分别单独写出来,也可以是一个列表

for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done

代码示例:

for loop in 1 2 3
do
    echo "The value is: $loop"
done
list=(a b c)
for var in ${list[*]}
do
    echo "var is $var"
done


# 输出结果
The value is: 1
The value is: 2
The value is: 3
var is a
var is b
var is c

while

while condition
do
    command
done

代码示例:

a=1
while (( $a<=3 ));do
    echo $a
    let a++
done


# 结合read可以实现常见的按行读取文件内容
echo "aa" > 1.text
echo "bb" >> 1.txt
while read line;do
    echo $line
done < 1.text


# 输出结果
1
2
3
aa
bb

case ... esac

为多选择语句,与其他语言中的 switch ... case 语句类似,是一种多分支选择结构,每个 case 分支用右圆括号开始, 用两个分号 ** ;; ** 表示 break ,即执行结束,跳出整个 case ... esac 语句,esac(就是 case 反过来)作为结束标记。

可以用 case 语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。

语法格式如下:


casein
模式1)
    command1
    command2
    ;;
模式2)
    command1
    command2
    ;;
esac
echo -n "Enter the name of an animal: "
read ANIMAL
echo -n "The $ANIMAL has "
case $ANIMAL in
  horse | dog | cat) echo -n "four";;
  man | kangaroo ) echo -n "two";;
  *) echo -n "an unknown number of";;
esac
echo " legs."

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux
    +关注

    关注

    87

    文章

    11191

    浏览量

    208623
  • 文本编辑器
    +关注

    关注

    0

    文章

    28

    浏览量

    8098
  • javascript
    +关注

    关注

    0

    文章

    515

    浏览量

    53738
  • Shell
    +关注

    关注

    1

    文章

    362

    浏览量

    23250
收藏 人收藏

    评论

    相关推荐

    shell脚本进阶】几个常用的shell进阶脚本

    shell脚本进阶】几个常用的shell进阶脚本
    的头像 发表于 09-19 08:59 1814次阅读
    【<b class='flag-5'>shell</b><b class='flag-5'>脚本</b>进阶】几个常用的<b class='flag-5'>shell</b>进阶<b class='flag-5'>脚本</b>

    Shell基础知识(上)

    shell脚本在日常的Linux系统管理工作中是必不可少的。如果不会写shell脚本,你就不算是一个合格的管理员。目前,很多单位在招聘Linux系统管理员时,
    发表于 11-14 09:24 503次阅读

    基础知识汇总!!!

    基础知识汇总
    发表于 11-07 18:14

    Shell脚本编程实验

    指示灯每隔一秒交替闪亮10次按照图中的脚本一字一句输入就行了,其中Shell基础知识一点都不清楚的话多百度下吧,上面有很多相关知识。这里我就脚本
    发表于 10-22 18:25

    shell脚本最简明的教程

    Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合
    的头像 发表于 10-16 11:27 4713次阅读
    <b class='flag-5'>shell</b><b class='flag-5'>脚本</b>最简明的教程

    分散控制系统DCS基础知识汇总文件下载

    分散控制系统DCS基础知识汇总文件下载
    发表于 04-14 17:10 32次下载
    分散控制系统DCS<b class='flag-5'>基础知识</b><b class='flag-5'>汇总</b>文件下载

    华为EMC基础知识汇总资源下载

    华为EMC基础知识汇总资源下载
    发表于 06-04 11:10 126次下载

    传感器基础知识及特性资源汇总下载

    传感器基础知识及特性资源汇总下载
    发表于 07-18 09:36 25次下载

    109个实用shell脚本分享

    Shell脚本,就是利用Shell的命令解释的功能,对一个纯文本的文件进行解析,然后执行这些功能,也可以说Shell脚本就是一系列命令的集合
    的头像 发表于 03-16 08:58 2559次阅读

    Linux开发_Makefile规则与Shell脚本语言

    介绍Linux下Makefile编程知识点,Shell脚本知识点。
    的头像 发表于 09-17 15:40 1213次阅读

    shell脚本基础知识汇总1

    Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。 Linux 的 Shell 种类众多,常见的有:
    的头像 发表于 02-15 10:48 743次阅读

    shell脚本基础知识汇总2

    Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。 Linux 的 Shell 种类众多,常见的有:
    的头像 发表于 02-15 10:48 628次阅读

    shell脚本基础知识汇总4

    Shell 编程跟 JavaScript、php 编程一样,只要有一个能编写代码的文本编辑器和一个能解释执行的脚本解释器就可以了。 Linux 的 Shell 种类众多,常见的有:
    的头像 发表于 02-15 10:49 626次阅读

    shell脚本基础知识

    shell脚本是一个文件,里面存放的是特定格式的指令,系统可以使用脚本解析器翻译或解析指令并执行(无需编译),shell脚本的本质是
    的头像 发表于 04-17 15:00 1033次阅读

    Linux Shell脚本经典案例分享

    ​ 作为一名 Linux 运维工程师,会写好的脚本不仅能提高工作效率,还能有更多的时间做自己的事。最近在网上冲浪的时候,发现大家对Shell脚本都有“心结”,要么觉得自己写出来不好看,要么根本无从下手。 下面分享249个真实
    发表于 06-16 14:03 617次阅读
    Linux <b class='flag-5'>Shell</b><b class='flag-5'>脚本</b>经典案例分享