我如何知道Bash中是否设置了变量?
例如,如何检查用户是否将第一个参数提供给函数?
function a {
# if $1 is set ?
}
Run Code Online (Sandbox Code Playgroud) 我正在看下面的代码:
if [ -z $2 ]; then
echo "usage: ...
Run Code Online (Sandbox Code Playgroud)
(3个点是不相关的使用细节.)
也许我在谷歌搜索错误,但我找不到该-z选项的解释.
以下代码以未绑定的变量错误退出.如何解决这个问题,同时仍然使用set -onounset选项?
#!/bin/bash
set -o nounset
if [ ! -z ${WHATEVER} ];
then echo "yo"
fi
echo "whatever"
Run Code Online (Sandbox Code Playgroud) 使用:
set -o nounset
Run Code Online (Sandbox Code Playgroud)
1)有一个索引数组,如:
myArray=( "red" "black" "blue" )
Run Code Online (Sandbox Code Playgroud)
检查元素1是否设置的最短方法是什么?
我有时会使用以下内容:
test "${#myArray[@]}" -gt "1" && echo "1 exists" || echo "1 doesn't exist"
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一个首选的.
2)如何处理非连续索引?
myArray=()
myArray[12]="red"
myArray[51]="black"
myArray[129]="blue"
Run Code Online (Sandbox Code Playgroud)
如何快速检查'51'已经设置好了?
3)如何处理关联数组?
declare -A myArray
myArray["key1"]="red"
myArray["key2"]="black"
myArray["key3"]="blue"
Run Code Online (Sandbox Code Playgroud)
例如,如何快速检查'key2'是否已被使用?
谢谢
编辑
最简单的方式在我看来:
if test "${myArray['key_or_index']+isset}"
then
echo "yes"
else
echo "no"
fi;
Run Code Online (Sandbox Code Playgroud)
这适用于索引和关联数组.set -o nounset没有显示错误.
感谢headDown为headup.