我们可以通过Bash命令行执行来读取变量名作为参数值吗?

我们可以通过Bash命令行执行来读取变量名作为参数值吗?

我们有一个简单的脚本,我们使用以下命令执行脚本:

script.sh 123 456

脚本内容

FirstNum=$1
SecondNum=$2

我们可以在执行时传递命令行,而不是在脚本中使用 $1 和 $2 吗?

    script.sh FirstNum=123 SecondNum=456 (so that i dont want to call $1 , $2 inside the script)

有没有办法不使用 $1 和 $2 并直接通过命令行传递值?

答案1

对于bashshell,您将需要使用getopts它来解析命令行参数。

https://sookocheff.com/post/bash/parsing-bash-script-arguments-with-shopts/

shell 脚本编写中的一项常见任务是解析脚本的命令行参数。 Bash 提供了 getopts 内置函数来做到这一点。本教程介绍如何使用 getopts 内置函数来解析 bash 脚本的参数和选项。

例子:

while getopts ":f:l:" opt; do
  case ${opt} in
    f )
      firstnum=$OPTARG
    l )
      lastnum=$OPTARG
      ;;
    \? )
      echo "Invalid option: $OPTARG" 1>&2
      ;;
    : )
      echo "Invalid option: $OPTARG requires an argument" 1>&2
      ;;
  esac
done
shift $((OPTIND -1))

我建议使用简单的 char 参数:

script.sh -f 123 -l 456

哪里-f是第一个,哪里-l是最后一个。

相关内容