我如何知道Bash中是否设置了变量?
例如,如何检查用户是否将第一个参数提供给函数?
function a {
# if $1 is set ?
}
Run Code Online (Sandbox Code Playgroud) 命令的目的是什么,什么都不做,只是一个评论领导者,但实际上是一个内置的shell?
它比在每个调用中将注释插入脚本大约40%要慢,这可能会根据注释的大小而有很大差异.我能看到的唯一可能的原因是:
# poor man's delay function
for ((x=0;x<100000;++x)) ; do : ; done
# inserting comments into string of commands
command ; command ; : we need a comment in here for some reason ; command
# an alias for `true' (lazy programming)
while : ; do command ; done
Run Code Online (Sandbox Code Playgroud)
我想我真正想要的是它可能具有的历史应用.
我知道set -u如果引用了任何未绑定的变量,脚本将失败,但在我的bash脚本中,我正在检查是否在if语句中未设置某个变量,然后我尝试对它执行某些操作,如下所示:
if [[ -z "${SOME_VARIABLE}" ]] ; then
echo '$SOME_VARIABLE' is not set
else
do_stuff_with_SOME_VARIABLE
fi
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试set -eu在我的前奏中运行上面的内容,我会收到以下错误,考虑到我正在尝试做的事情,这似乎有点违反直觉:
-bash: SOME_VARIABLE: unbound variable
[Process completed]
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我实际上并没有尝试$SOME_VARIABLE在它未设置时使用,所以我想知道的是,当我实际上尝试使用未设置的变量时,如果有一些方法可以使脚本失败(比如将它们作为参数或对它们应用字符串操作)但不是在我只是检查它们是否未被设置时?