linux - 检查是否设置了传递给 bash 脚本的第一个参数?

标签 linux bash

我正在尝试查看传递给我的脚本的第一个参数是否已设置。我使用此处找到的说明创建了一个测试: How to check if a variable is set in Bash?

这是我的脚本:

var=$1
if [ -z ${var+x} ]; then echo "var is unset"; else echo "var is set to '$var'"; fi

假设我在没有任何参数的情况下运行它:

ole@MKI:./test.sh
var is set to ''

假设我用一个参数运行它:

ole@MKI:./test.sh foo
var is set to 'foo'

在这两种情况下,它都不会报告 var 未设置。

想法?

TIA, 奥莱

最佳答案

问题出在这一行:

var=$1

这会设置 var 并且无论是否设置了 $1 都会这样做。解决方案是测试$1:

if [ -z ${1+x} ]; then echo "var is unset"; else echo "var is set to '$1'"; fi

这种方法有效:

$ test.sh
var is unset
$ test.sh a
var is set to 'a'

关于linux - 检查是否设置了传递给 bash 脚本的第一个参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37378142/

相关文章:

linux - 无法打开流 : Too many open files

bash - 删除第一列中的重复记录但不修改其余列

bash - 如何使用 bash 删除文件中只出现一次的行

bash - 从 shell 脚本生成交互式 telnet session

for循环数语法上限的bash变量

php - 转换 LAMP 应用程序以作为 Windows MSI 分发

Linux 服务器 (debian) : TTY 6. 5GiB

linux - Fortran:如何获取集群的节点名称

c - Visual Studio 2017 跨平台中特定于 Linux 的 header

python - 如何将一组 csv 文件转换为另一组 csv 文件(具有不同的文件名和格式)?