如何传递和解析Linux Bash脚本参数

Bash是一种强大的脚本语言,由各种Linux发行版、Unix和BSD提供。如果我们需要使脚本动态化,我们通常使用参数。参数通过命令行提供给脚本。在本教程中,我们将研究参数传递的不同用例和示例。

语法

为了在bash脚本中使用外部提供的值,我们应该在脚本名称之后提供它们。下面的语法假设脚本是可执行的。

myscript.sh PARAM1 PARAM2 ...

或者我们可以用 bash 为了解释下面的脚本并提供参数。

bash myscript.sh PARAM1 PARAM2 ...

提供参数

我们已经学会了论点的语法。在本例中,我们将查看有关参数传递的用例。例如,我们将提供两个参数。

$ myscript.sh 1 3

如果我们需要提供一个包含多个单词的字符串,我们可以使用单引号或双引号。在这个例子中,我们将证明 10 Hello Poftut 作为两个独立的论点。

$ myscript.sh 10 "Hello Poftut"

读取脚本中的参数

现在真正的工作开始了。我们已经学习了如何从shell或命令行提供参数。在这一部分中,我们将了解如何在脚本中阅读它们。Bash提供 $1 , $2 ,  … 类似于在脚本中读取输入参数的用法。可以从变量名访问第一个参数 $1 ,第二个 $2 所以…在这个例子中,我们将提供两个参数 Hello Poftut 编写脚本。

#!/bin/bash  echo $1 $2
Read Argument Inside Script
读取脚本中的参数

检测命令行参数

如果为脚本提供了一些命令行参数,那么我们可以使用$1、$2、$3、…变量来检测命令行参数。我们可以使用if语句检查特定的输入,如下所示。下面我们将检查位置参数1,如果它包含某个值,该值将打印到屏幕上。

#!/bin/bashif [ "$1" != "" ]; then    echo "Positional parameter 1 contains value"    echo $1else    echo "Positional parameter 1 is empty"fi

将提供的参数赋给Bash变量

bash变量的另一个用例是用有意义的名称为它们分配新的变量。这将使我们能够更改提供的值,并将它们与名称一起正确使用。在这个例子中,我们将 Hello Poftut 转换为名为 salute name .

#!/bin/bash  salute=$1 name=$2  echo $salute $name
Assign Provided Arguments To Bash Variable
将提供的参数赋给Bash变量

用For或While读取多个参数

有些时候,有些参数不适合我们的条件,我们可能需要大量的参数来以迭代的方式提供和使用它们。在这种情况下,我们可以使用bash循环机制 for while . 我们可以迭代给定的参数,比如数组或列表 for while . 在本例中,我们将迭代提供的参数并将它们打印到shell中。我们将使用 [email protected] 指定所提供参数的列表,并将每个项放入名为 var 在每一步中。

#!/bin/bash  for var in "[email protected]" do   echo $var done
Read Multiple Arguments with For or While
用For或While读取多个参数

用参数名读取

作为常规的Linux应用程序,我们可以使用参数名作为参数并相应地解析它们。我们将使用 getops 函数,它将解析数组中提供的选项。在本例中,我们将使用 while 循环 case 结构。我们将解析提供的参数名 u 用户名和 p 密码。

#!/bin/bash  while getopts u:p: option do  case "${option}"  in  u) USER=${OPTARG};;  p) PASSWORD=${OPTARG};;  esac done  echo "User:"$USER echo "Password:"$PASSWORD
Read With Parameter Names
用参数名读取

使用getopts函数读取Bash参数

Bash提供了不同的函数来读取Bash输入参数。 getopts 是一个函数,可用于读取指定的命名参数并以简单的方式将其设置到bash变量中。getoptst将读取每个输入参数,并查找要匹配的选项,如果匹配,则将参数值设置为给定的变量名。

while getopts u:a:l: optiondocase "${option}"inu) USER=${OPTARG};;a) AGE=${OPTARG};;l) LOCATION=${OPTARG};;esacdoneecho "Given user name is: "$USERecho "Given age is: "$DATEecho "Given location is: "$LOCATION

我们可以像下面那样运行这个脚本,但是在运行之前,我们必须使用chmod命令使脚本可以运行。

$ chmod u+x getopts_example.sh$ ./getopts_example.sh -u ismail -a 36 -l Turkey
图片[5]-如何传递和解析Linux Bash脚本参数-cppku-C++库
使用getopts函数读取Bash参数

获取传递的参数数

Bash提供与 $# 变量。我们可以得到传递参数的数量,并用于不同的情况,下面我们将打印传递给终端的参数数量。

#!/bin/bashecho "You provided $# arguments"
图片[6]-如何传递和解析Linux Bash脚本参数-cppku-C++库
获取传递的参数数

打印所有参数的值

我们还可以用一个变量打印所有提供的参数或值 [email protected] .

#!/bin/bashecho "All Arguments values:" [email protected]
图片[7]-如何传递和解析Linux Bash脚本参数-cppku-C++库
打印所有参数的值

相关文章: linuxtee命令教程及Stdout管理示例

© 版权声明
THE END
喜欢就支持一下吧,技术咨询可以联系QQ407933975
点赞0
分享