我尝试编写一个非常简单的 bash 脚本文件,名为bash_script.sh
#!/bin/bash
if [ -z $1 ];then
echo $1
else
echo 'no variable'
fi
Run Code Online (Sandbox Code Playgroud)
在终端中我尝试运行,./bash_script.sh hello但终端上的输出是no variable. 我在这里做错了什么?
-z如果其参数为空字符串,则该运算符为 true。hello不是空字符串,因此else采用该子句。
也许你的意思是简单地说
if [[ "$1" ]]; then
echo "$1"
else
echo 'no variable'
fi
Run Code Online (Sandbox Code Playgroud)
还要注意何时在 shell 变量周围加上引号(基本上总是如此,至少在您了解何时可能不想这样做之前)以及Bash 脚本中对[[over的偏好。[
但可能更惯用的是,如果您想允许多个参数,只需检查是否$#等于或大于零。1无论其中一些参数是否为空字符串,这都将工作相同。
为了完整起见,让原始脚本采用分支的方法if是
./bash_script.sh ''
Run Code Online (Sandbox Code Playgroud)
(或者在空参数周围使用双引号而不是单引号)。
| 归档时间: |
|
| 查看次数: |
5420 次 |
| 最近记录: |