相关疑难解决方法(0)

如何检查Bash中是否设置了变量?

我如何知道Bash中是否设置了变量?

例如,如何检查用户是否将第一个参数提供给函数?

function a {
    # if $1 is set ?
}
Run Code Online (Sandbox Code Playgroud)

variables bash shell

1417
推荐指数
23
解决办法
119万
查看次数

254
推荐指数
8
解决办法
38万
查看次数

-z在Bash中意味着什么?

我正在看下面的代码:

if [ -z $2 ]; then
        echo "usage: ...
Run Code Online (Sandbox Code Playgroud)

(3个点是不相关的使用细节.)
也许我在谷歌搜索错误,但我找不到该-z选项的解释.

bash

253
推荐指数
4
解决办法
18万
查看次数

使用"set -o nounset"测试是否在bash中设置变量

以下代码以未绑定的变量错误退出.如何解决这个问题,同时仍然使用set -onounset选项?

#!/bin/bash

set -o nounset

if [ ! -z ${WHATEVER} ];
 then echo "yo"
fi

echo "whatever"
Run Code Online (Sandbox Code Playgroud)

unix bash shell

87
推荐指数
5
解决办法
4万
查看次数

检查数组中索引或键的最简单方法是什么?

使用:

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.

arrays indexing bash key

77
推荐指数
5
解决办法
6万
查看次数

标签 统计

bash ×5

shell ×3

arrays ×1

indexing ×1

is-empty ×1

key ×1

unix ×1

variables ×1