gpt4 book ai didi

bash - 如何测试一个变量是否存在并且已经被初始化

转载 作者:行者123 更新时间:2023-11-29 09:01:35 30 4
gpt4 key购买 nike

我必须执行一个函数,该函数必须测试变量是否已在 Bash 中正确定义并且必须使用其关联值。

例如,这些变量在脚本的顶部进行初始化。

#!/bin/bash

var1_ID=0x04
var2_ID=0x05
var3_ID=0x06
var4_ID=0x09

我想按如下方式调用名为test 的脚本:

./test var1

目前实现的功能是:

function Get()
{
if [ $1"_ID" != "" ]; then
echo "here"
echo $(($1_ID))
else
exit 0
fi
}

我不明白为什么我输入./test toto或其他什么我得到here

我是否需要使用特定命令,例如 grep

最佳答案

使用参数展开:

: ${var:?}

如果空字符串是有效值(即,您只想测试定义性),请删除冒号。

: ${var?}

如果你不希望脚本在问题上停止,你可以使用

if [[ ${var:+1} ]] ; then
# OK...
else
echo Variable empty or not defined. >&2
fi

man bashParameter Expansion 下记录:

When not performing substring expansion, using the forms documented below (e.g., :-), bashtests for a parameter that is unset or null. Omitting the colon results in a test onlyfor a parameter that is unset.

${parameter:?word}

Display Error if Null or Unset. If parameter is null or unset, the expansion ofword (or a message to that effect if word is not present) is written to the standard error and the shell, if it is not interactive, exits. Otherwise, the value ofparameter is substituted.

${parameter:+word}

Use Alternate Value. If parameter is null or unset, nothing is substituted, otherwise the expansion of word is substituted.

关于bash - 如何测试一个变量是否存在并且已经被初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27108058/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com