Bash Shell找出变量是否为空
时间:2020-01-09 10:45:54 来源:igfitidea点击:
在Linux/Apple OS X/Unix之类的操作系统下,如何查找名为$_JAIL path的变量是否为空?
您能告诉我bash shell上的命令以了解变量是否为空吗?
您可以将-z选项传递给if命令或者条件表达式。
如果STRING的长度为零,则变量($var)为空。
test命令用于检查文件类型并比较值。
本教程显示如何使用test命令找出bash shell变量是否为空。
用Bash脚本确定变量是否为空的各种方法
要确定bash变量是否为空:
- 如果未设置bash变量或者将其设置为空字符串,则返回true:
if [-z" $var"]; - 另一个选项:
[-z" $var"] && echo" Empty" - 确定bash变量是否为空:[ ! -z "$var" ]] && echo "Not empty" || echo "Empty"`
Bash Shell找出变量是否为空
让我们详细了解语法和示例。
if命令的语法如下:
if [ -z "$var" ]
then
echo "$var is empty"
else
echo "$var is NOT empty"
fi
或者
if test -z "$var"
then
echo "$var is empty"
else
echo "$var is NOT empty"
fi
检查bash shell变量是否为空的另一种方法
您也可以尝试控制运算符。
语法为:
[ -z "$var" ] && echo "Empty" [ -z "$var" ] && echo "Empty" || echo "Not empty"
或者
[[ -z "$var" ]] && echo "Empty" [[ -z "$var" ]] && echo "Empty" || echo "Not empty"
或者
## Check if $var is set using ! i.e. check if expr is false ## [ ! -z "$var" ] || echo "Empty" [ ! -z "$var" ] && echo "Not empty" || echo "Empty" [[ ! -z "$var" ]] || echo "Empty" [[ ! -z "$var" ]] && echo "Not empty" || echo "Empty"
例如:
## taken from gen_html_to_pdf() ##
IFS='|'
set -- $line
local pdfid=""
local pdfurl=""
local pdftitle=""
local pdf="${output}/${pdfid}.pdf"
[[ -z "$pdfurl" ]] && { echo "Error: URL not found in $_db"; exit 1; }
echo "Creating $pdf ..."
# rest of code ...
Sh/Bash一个衬里示例,以确定bash变量是否为空
输入以下命令
## set _JAIL _JAIL="/path/to/apache" ## find out if it is empty or not ## [ -z "$_JAIL" ] && echo "Empty: Yes" || echo "Empty: No"
另一个例子:
_JAIL="" [ -z "$_JAIL" ] && echo "Empty: Yes" || echo "Empty: No"
另一个例子:
## unset (remove) $_JAIL ## unset _JAIL [ -z "$_JAIL" ] && echo "Empty: Yes" || echo "Empty: No"
if命令的语法和示例
#!/bin/sh
_JAIL=""
if [ -z "$_JAIL" ]
then
echo "Please set $_JAIL"
else
echo "Setting up jail at $_JAIL"
//call setjail()
// setjail
fi
关于双括号语法的注释
如果您不关心可移植性,请尝试:
## set _JAIL _JAIL="/path/to/apache" ## find out if it is empty or not ## [[ -z "$_JAIL" ]] && echo "Empty" || echo "Not empty"</kbd>
或者
#!/bin/bash
###################################
### Warning: Portability issue. ###
###################################
_JAIL=""
## note double bracket syntax:
if [[ -z "$_JAIL" ]]
then
echo "Please set $_JAIL"
else
echo "Setting up jail at $_JAIL"
//call setjail()
// setjail
fi
示例:确定bash变量是否为空
最后,这里是一个脚本,用于演示基于bash/sh/posix的shell的各种可能性:
#!/bin/bash
JAIL="/nginx"
HINT=""
# Do three possibilities for $JAIL ##
for i in 1 2 3
do
case $i in
1) JAIL="/nginx/jail"; HINT="value set";;
2) JAIL=""; HINT="value set to empty string";;
3) unset JAIL; HINT="$JAIL unset";;
esac
###############################################
# Update user with actual values and action
# $JAIL set to a non-empty string (1)
# $JAIL set to the empty string (2)
# $JAIL can be unset (3)
################################################
echo "*** Current value of $JAIL is '$JAIL' ($HINT) ***"
## Determine if a bash variable is empty or not ##
if [ -z "${JAIL}" ]; then
echo "JAIL is unset or set to the empty string"
fi
if [ -z "${JAIL+set}" ]; then
echo "JAIL is unset"
fi
if [ -z "${JAIL-unset}" ]; then
echo "JAIL is set to the empty string"
fi
if [ -n "${JAIL}" ]; then
echo "JAIL is set to a non-empty string"
fi
if [ -n "${JAIL+set}" ]; then
echo "JAIL is set, possibly to the empty string"
fi
if [ -n "${JAIL-unset}" ]; then
echo "JAIL is either unset or set to a non-empty string"
fi
done

