linux - Bash 脚本检查第一个参数是否存在使用返回语句和变量 $?

标签 linux bash

bash 脚本中的新功能,必须编写一个函数来检查第一个给定参数是否为空。如果为空则输出错误信息,否则成功。 使用返回语句和变量 $?输出应该是这样的: ./test.sh -> 脚本失败./test.sh hallo -> 脚本正常。 谢谢!

这是我现在拥有的:

check_parameter() {
  var=$1

  if [ -z ${var} ]; then
    return 1
  else
    return 0
  fi

  if [ $?== 0 ]; then
    echo " OK. "

  else
    echo " failed. "
  fi
}
check_parameter $1

似乎 ìf [ -z $var ]ìf [ -z ${var} ] 不起作用。

最佳答案

注意变量可以被定义,但是有一个空值;也就是说,您可以区分 check_parametercheck_parameter ""

也就是说,您可以使用单行参数扩展来处理。

check_parameter () {
    : ${1?Parameter required}
}

check_parameter () {
    : ${1:?Non-empty parameter required}
}

在这两种情况下,调用 check_parameter 的退出状态都是 1 并显示给定的错误消息。只有在第二种情况下,check_parameter "" 才会失败并显示错误消息。

但请注意,如果在交互式 shell 中执行,构造将导致函数简单地返回。在非交互式 shell 中,函数返回后 shell 本身将立即退出,因此它与显式检查并在未设置变量时使用 return 略有不同。

关于linux - Bash 脚本检查第一个参数是否存在使用返回语句和变量 $?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58237605/

相关文章:

c++ - 在 QT 项目中使用 Crypto++ 静态库

linux - Bash命令行重命名通配符

linux:杀死后台任务

Java 无法在 Linux 中的 .jar 文件中找到类

linux - 如何从 Bash 中的这个 "while read"循环中获取值?

java - FTP下载的文件,解压时出错

bash - 意外标记 `}' 附近的语法错误`

bash - 在 FFMPEG 中包含 Youtube-dl 在 Bash (OSX) 中不起作用

bash - 最佳 Linux 结果的输出

Linux 狂欢 : add prefix to lines if match the condition