我如何知道Bash中是否设置了变量?
例如,如何检查用户是否将第一个参数提供给函数?
function a {
# if $1 is set ?
}
Run Code Online (Sandbox Code Playgroud) 在您看来,您遇到的最令人惊讶,奇怪,奇怪或真正的"WTF"语言功能是什么?
每个答案只能有一个功能.
我尝试使用以下语法在shell脚本中声明一个布尔变量:
variable=$false
variable=$true
Run Code Online (Sandbox Code Playgroud)
它是否正确?另外,如果我想更新该变量,我会使用相同的语法吗?最后,使用布尔变量作为正确的表达式是以下语法:
if [ $variable ]
if [ !$variable ]
Run Code Online (Sandbox Code Playgroud) 我正在尝试进行简单的条件检查,但它似乎不起作用.
如果$#等于0或大于1那么打个招呼.
我尝试了以下语法但没有成功:
if [ "$#" == 0 -o "$#" > 1 ] ; then
echo "hello"
fi
if [ "$#" == 0 ] || [ "$#" > 1 ] ; then
echo "hello"
fi
Run Code Online (Sandbox Code Playgroud) 最近在一次代码审查中,一位同事声称该[[ ]]构造比[ ]在类似的构造中更受欢迎
if [ "`id -nu`" = "$someuser" ] ; then
echo "I love you madly, $someuser"
fi
Run Code Online (Sandbox Code Playgroud)
他无法提供理由.有吗?
我正在写一个shell脚本.在这个shell脚本中,我有一个变量,它接受默认值或环境变量的值.但是,环境变量不必存在.
例如,假设在运行脚本之前,我执行以下操作:
export DEPLOY_ENV=dev
Run Code Online (Sandbox Code Playgroud)
如何告诉脚本搜索此环境变量,并将其值存储在脚本内的变量中.此外,如何告诉脚本如果此环境变量不存在,请存储默认变量?
我正在阅读bash示例,if但有些示例是用单个方括号编写的:
if [ -f $param ]
then
#...
fi
Run Code Online (Sandbox Code Playgroud)
其他双方括号:
if [[ $? -ne 0 ]]
then
start looking for errors in yourlog
fi
Run Code Online (Sandbox Code Playgroud)
有什么不同?
我没有为$ pass_tc11设置任何值; 所以它在回显时返回null.如何在if条款中进行比较?
这是我的代码.我不希望打印"嗨"......
-bash-3.00$ echo $pass_tc11
-bash-3.00$ if [ "pass_tc11" != "" ]; then
> echo "hi"
> fi
hi
-bash-3.00$
Run Code Online (Sandbox Code Playgroud) 一个简单的Bash变量测试:
${varName:? "${varName} is not defined"}
Run Code Online (Sandbox Code Playgroud)
我想把它放在一个函数中来重复使用它.怎么样?
以下失败
#
# Test a variable exists
tvar(){
val=${1:? "${1} must be defined, preferably in $basedir"}
if [ -z ${val} ]
then
echo Zero length value
else
echo ${1} exists, value ${1}
fi
}
Run Code Online (Sandbox Code Playgroud)
即如果测试失败,我需要退出.