我尝试了与if-in-shell相反的方法,只在散列中不存在值的情况下进行操作。我从这里学会了在bash中创建哈希:Shell脚本中的关联数组
declare -A myhash
我声明了一个简单的哈希:
myhash[$key]="1"
和
[ ${myhash[$key]+abc} ]
从这里查看myhash[$key]是否存在:检查数组中的索引或键的最简单方法?
我还学会了添加!在一个表达式前面做相反的if从句:如何使“if not true条件”?
但是下面的表达式
if ! [ ${myhash[$key]+abc} ]; then
echo $key
fi
不起作用,并且未打印任何信息。没有错误消息。
我试过这个:
[ ${myhash[$key]+abc} ] && echo $key
并收到错误消息:
abc: command not found
有人能告诉我怎么做吗?
检查数组中的索引或键的最简单方法?显示如何使用[${array[key]abc}]
检查它是否存在。
如果成功,则命令成功退出,因此
您想检查它是否不存在。因此,如果
部分退出失败。因此,请使用<代码>而不是<代码>
[ ${myhash[$key]+abc} ] || echo "does not exist"
<代码>
| |
:仅当第一个命令未成功时,才能执行下一个命令
没有打印任何内容的原因是您在设置值后检查该值是否未设置。
以下是您正在执行的操作:
#!/bin/bash
key=foo
declare -A myhash # create associative array
myhash[$key]="1" # set the value
if ! [ ${myhash[$key]+abc} ]; then # check if value is not set
echo $key # if so, print key
fi
现在您会问“为什么设置值时不触发未设置检查?”
如果您想检查密钥是否已设置,则不应该使用!反转存在检查。
。
至于<代码>[${myhash[$键]abc}]
如果您执行了${myhash[$key]abc},您就会看到这样的结果
首先,这个
[ ${myhash[$key]+abc} ]
将测试参数扩展的结果是否为空。要么存在${myhash[$key]}并扩展为字符串(其本身可能为空,也可能不为空),要么不存在并扩展为字符串“abc”。假设您没有设置myhash[$key]=“”,扩展总是生成一个非空字符串,因此命令成功。因此,![${myhash[$key]abc}]
将始终失败。
假设“abc”不是myhash中的有效条目,您需要实际检查参数是否扩展为实际值,或“abc”是否为未设置的键:
if [[ ${myhash[$key]+abc} == abc ]]; then
echo "$key does not exist in myhash"
else
echo "myhash[$key]=${myhash[$key]}"
fi
本文向大家介绍什么是Shell脚本?,包括了什么是Shell脚本?的使用技巧和注意事项,需要的朋友参考一下 Shell脚本是由Unix Shell(是命令行解释器)运行的计算机程序中的命令列表。Shell脚本通常具有描述步骤的注释。Shell脚本执行的不同操作是程序执行,文件操作和文本打印。包装器也是一种Shell脚本,用于创建程序环境,运行程序等。 贝壳类型 Unix中有两种主要的Shell类型
什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_tut for ((i=0; i<10; i++)); do touch test_$i.txt done 示例解释 第1行:指定脚本解释器,这里是用/bin/sh做解释器的 第2行:切换到当前用户的home目录 第3行:创建一个目录shell_tut 第4行:切换到s
问题内容: 我正在看这段代码。我想知道以下代码段的含义 。 在一个问题中,它说代表字符串,但这是在Perl中。这里也一样吗? 此外,我想知道该变量是否自动更新。它已被初始化为开始时,但后来如何递增? 问题答案: 检查左操作数的值是否小于或等于()右操作数的值,如果是,则条件为true。 考虑: 那是真的。
本文向大家介绍Shell脚本判断Apache进程是否存在,包括了Shell脚本判断Apache进程是否存在的使用技巧和注意事项,需要的朋友参考一下 写一个脚本检查Apache进程是否存在,若不存在则显示不存在,若存在则显示进程个数,当不等于10个时用红色字体通知管理员,并询问管理员是否启动Apache服务。
终于到shell 脚本这章了,在以前笔者卖了好多关子说shell脚本怎么怎么重要,确实shell脚本在linux系统管理员的运维工作中非常非常重要。下面笔者就带你正式进入shell脚本的世界吧。 到现在为止,你明白什么是shell脚本吗?如果明白最好了,不明白也没有关系,相信随着学习的深入你就会越来越了解到底什么是shell脚本。首先它是一个脚本,并不能作为正式的编程语言。因为是跑在linux的s
bash csh ksh zsh 基本语法 定义和使用变量 #!/bin/sh a=" hello world" echo $a echo 'a is xiaxaiwen${a}' if else if ....; then .... elif ....; then .... else .... fi [] 条件测试 [] 中前后一定要加空格 sh