Shell 脚本解释 Bash 位置参数的2个示例

举报
Tiamo_T 发表于 2022/02/13 10:37:29 2022/02/13
【摘要】 参数是存储值的实体。它可以是名称、数字或一些特殊字符。变量是由名称表示的参数。已经为您设置了一些变量,其中大多数变量无法分配值。 这些变量包含有用的信息,shell 脚本可以使用这些信息来了解它运行的环境。

参数是存储值的实体。它可以是名称、数字或一些特殊字符。变量是由名称表示的参数。已经为您设置了一些变量,其中大多数变量无法分配值。

这些变量包含有用的信息,shell 脚本可以使用这些信息来了解它运行的环境。

Bash 提供了两种参数。

  • 位置参数
  • 特殊参数

在本文中,让我们通过示例讨论 bash 位置参数。


示例 1:Bash 位置参数 – $0, $1, $2 ..

位置参数是在调用脚本时提供给脚本的参数。它可能从 $1 到 $N。当 N 包含多个数字时,它必须用大括号括起来,如 ${N}。

变量 $0 是程序调用时的基本名称。

以下示例获取两个参数并提供这两个整数之间的算术运算结果。


首先,创建如下所示的算术.sh shell 脚本。

$ cat arithmetic.sh
#!/bin/bash

echo -e  "\$1=$1"
echo -e "\$2=$2"

let add=$1+$2
let sub=$1-$2
let mul=$1*$2
let div=$1/$2

echo -e "Addition=$add\nSubtraction=$sub\nMultiplication=$mul\nDivision=$div\n"

接下来,使用适当的参数执行算术.sh,如下所示。

$ ./arithmetic.sh 12 10
$1=12
$2=10
Addition=22
Subtraction=2
Multiplication=120
Division=1

在上面的输出中,$1 的值为 12,$2 的值为 10。

Shell 内置 'let' 允许对 shell 变量执行算术运算。上面的脚本对给定的参数进行算术运算,例如加法、减法、乘法和除法。

示例 2:设置/取消设置 Bash 位置参数

内置的 set 命令用于设置和取消设置位置参数。

首先,创建 positional.sh shell 脚本,如下所示。

$ cat positional.sh
#!/bin/bash

# From command line
echo -e "Basename=$0"
echo -e  "\$1=$1"
echo -e "\$2=$2"
echo -e "\$3=$3"

# From Set builtin
set First Second Third
echo -e  "\$1=$1"
echo -e "\$2=$2"
echo -e "\$3=$3"

# Store positional parameters with -(hyphen)
set - -f -s -t
echo -e  "\$1=$1"
echo -e "\$2=$2"
echo -e "\$3=$3"

# Unset positional parameter
set --
echo -e  "\$1=$1"
echo -e "\$2=$2"
echo -e "\$3=$3"

上面的脚本首先打印命令行参数,然后 set command 显式设置位置参数。用 - 指选项结束设置,所有后续参数都是位置参数,即使它们可以以 '-' 开头。使用 '–' 设置,不带任何其他参数,取消设置所有位置参数。

接下来,执行positional.sh,如下所示。

$ ./positional.sh
Basename=t.sh
$1=12
$2=10
$3=
$1=First
$2=Second
$3=Third
$1=-f
$2=-s
$3=-t
$1=
$2=
$3=
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。