Shell脚本传参数方法总结

这篇文章主要介绍了Shell脚本传参数方法总结,本文着重讲解传递固定个数参数的方法、可变个数参数的方法两部份内容,需要的朋友可以参考下

一、接收固定长度的参数

代码如下:

[root@svn shell_example]# cat params.sh
#!/bin/bash
#传参测试脚本
echo "My name is `basename $0` -I was called as $0"
echo "My first parameter is : $1"
echo "My second parameter is : $2"

空参数执行
代码如下:

[root@svn shell_example]# sh params.sh
My name is params.sh -I was called as params.sh
My first parameter is :
My second parameter is :

传递2个参数执行
代码如下:

[root@svn shell_example]# sh params.sh one two
My name is params.sh -I was called as params.sh
My first parameter is : one
My second parameter is : two

二、那如果还有参数怎么办呢?还要一个个加上来吗?答案是否定的

以下用法应该不陌生,就是直接执行脚本本身,没有附带任何参数,那么脚本讲抛出帮助信息.即怎么使用此脚本.见红字部分

代码如下:

[root@svn shell_example]# sh params_v2.sh
My name is params_v2.sh -I was called as params_v2.sh
I was called with 0 parameters.
Usage: params_v2.sh first second
You provided 0 parameters,but 2 are required.

代码如下
代码如下:

[root@svn shell_example]# cat params_v2.sh
#!/bin/bash
# 这是个测试脚本传参的测试例子

echo "My name is `basename $0` -I was called as $0"
echo "I was called with $# parameters."

if [ "$#" -eq "2" ];then
    echo "My first parameter is $1"
    echo "My second parameter is $2"
else
    echo "Usage: `basename $0` first second"
    echo "You provided $# parameters,but 2 are required."
fi

详细的执行过程如下
不传参数执行

代码如下:

[root@svn shell_example]# sh params_v2.sh
My name is params_v2.sh -I was called as params_v2.sh
I was called with 0 parameters.
Usage: params_v2.sh first second
You provided 0 parameters,but 2 are required.

传递3个参数执行
代码如下:

[root@svn shell_example]# sh params_v2.sh one two three
My name is params_v2.sh -I was called as params_v2.sh
I was called with 3 parameters.
Usage: params_v2.sh first second
You provided 3 parameters,but 2 are required.

传递2个参数执行
代码如下:

[root@svn shell_example]# sh params_v2.sh one two
My name is params_v2.sh -I was called as params_v2.sh
I was called with 2 parameters.
My first parameter is one
My second parameter is two

问题来了,要是后期还要加参数怎么办呢?或者我也不确定到底会传几个参数.
解决方法如下,详细执行结果如下

代码如下:

[root@svn shell_example]# cat manyparams.sh
#!/bin/bash
#这是个测试脚本传N个参数的例子

echo "我的名字是 `basename $0` - 我是调用自 $0"
echo "我有 $# 参数"

count=1
while [ "$#" -ge "1" ];do
    echo "参数序号为 $count 是 $1"
    let count=count+1
    shift
done

一个参数执行

[root@svn shell_example]# sh manyparams.sh one

我的名字是 manyparams.sh - 我是调用自 manyparams.sh
我有 1 参数
参数序号为 1 是 one

5个参数执行

代码如下:

[root@svn shell_example]# sh manyparams.sh one two three four five

我的名字是 manyparams.sh - 我是调用自 manyparams.sh
我有 5 参数
参数序号为 1 是 one
参数序号为 2 是 two
参数序号为 3 是 three
参数序号为 4 是 four
参数序号为 5 是 five


--注意:

$0就是脚本文件的名字,$1是第一个参数,$2为第2个...,参见[1](有$0的说明),$9
以后就需要打括号了,如${10},${11},${12}...

--本篇文章转自:Shell脚本传参数方法总结

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在shell脚本中,可以使用特殊变量$1,$2,$3...来获取递给脚本参数。其中$1表示第一个参数,$2表示第二个参数,以此类推。例如,以下是一个简单的示例脚本,用于获取两个参数并将它们相加: ```shell #!/bin/bash num1=$1 num2=$2 sum=$((num1 + num2)) echo "The sum of $num1 and $num2 is: $sum" ``` 在执行此脚本时,需要在命令行中递两个数字作为参数,例如: ```shell $ ./script.sh 2 3 The sum of 2 and 3 is: 5 ``` 在上面的示例中,$1和$2分别获取了命令行中递的第一个和第二个参数,并将它们相加后输出了结果。 ### 回答2: 在shell脚本中,我们可以通过使用特殊变量来获取参数。这些特殊变量包括$0、$1、$2等。其中,$0代表脚本本身的名称,$1代表第一个参数,$2代表第二个参数,以此类推。 我们可以通过在脚本中使用这些特殊变量来获取命令行中入的参数。例如,如果我们运行脚本如下: ```shell ./script.sh arg1 arg2 ``` 在脚本中,我们可以通过$1和$2来分别获取arg1和arg2的值。我们可以使用这些参数进行各种操作和计算。下面是一个简单的示例: ```shell #!/bin/bash echo "第一个参数为:$1" echo "第二个参数为:$2" result=$(($1 + $2)) echo "计算结果为:$result" ``` 当我们运行这个脚本时,会输出如下结果: ``` 第一个参数为:arg1 第二个参数为:arg2 计算结果为:arg1arg2 ``` 在这个例子中,我们通过$1和$2获取了入的参数,然后使用这些参数进行了加法运算,并输出了计算结果。 总结起来,使用特殊变量$1、$2等可以轻松获取脚本入的参数,使得我们可以根据参数进行各种自定义操作。 ### 回答3: Shell脚本是一种用于执行一系列命令的脚本语言,它可以通过不同的方式来获取参数。 一种常见的方式是通过特殊变量"$1"、"$2"等来获取命令行入的参数。其中,"$0"代表脚本本身的名称,"$1"代表第一个参数,"$2"代表第二个参数,以此类推。例如,如果我们运行"sh myscript.sh hello world",在脚本中可以使用"$1"获取到"hello",使用"$2"获取到"world"。 另一种方式是使用命令行选项来获取参数。可以使用getopt命令或者使用内置的特殊变量"$OPTARG"来获取选项参数。getopt命令可以帮助解析命令行选项并将其存储在特殊变量中。使用这种方式可以为命令行入的参数添加更多的灵活性和可扩展性。 除了上述方法外,还可以使用环境变量来获取参数。环境变量是一种特殊的变量,它们在整个系统中可见。通过设置环境变量,我们可以在脚本中获取到需要的参数。 总之,Shell脚本可以通过特殊变量、命令行选项和环境变量等方式获取参数。这些方式可以根据具体的需求和场景进行选择和使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值