shell——参数的传递

很多时候shell脚本的执行时需要向其传递参数,脚本执行中获取参数格式是 $n,n为自然数,从1开始,几就是第几个参数。

#!/bin/bash
#author:atong
#version:test1
echo "我们来看例子!!"
echo "$0"
echo "第一个参数:$1"
echo "第二个参数:$2"
echo "第三个参数:$3"

$0就是打印shell脚本文件名

输出结果 

# sh parameter_passing.sh  w e r
我们来看例子!!
parameter_passing.sh
第一个参数:w
第二个参数:e
第三个参数:r

 我们在后面会在编写脚本时,遇到很多常用、特殊、必记的参数:

参数 作用
$# 统计传递到脚本的参数个数
$* 以字符串的形式输出传递的所有参数
$$ 脚本运行当前进程ID号

$@

和$*相同,但使用时加引号,并在引号中返回每个参数
$! 后台运行的最后一个进程ID号
                $- 显示shell使用的当前选项,与set命令功能相同
                $? 显示最后命令的退出状态。0表示无误,其余值都表明有错误。

 例

#!/bin/bash
#author:atong
#version:test1
echo "我们来看例子!!"
echo "$0"
echo "第一个参数:$1"
echo "传参的个数:$#"
echo "所有参数字符串输出:$*"
sh parameter_passing.sh  w e r
我们来看例子!!
parameter_passing.sh
第一个参数:w
传参的个数:3
所有参数字符串输出:w e r

$*和$@

同:都会引用到传递的参数

异:$*是把所有参数看作一个参数,$@是看作分开的独立参数

#!/bin/bash
#author:atong
#version:test1
echo "------\$* 效果------"
for i in "$*";do
        echo $i
done

echo "------\$@ 效果------"
for i in "$@";do
        echo $i
done

 输出效果

 sh parameter_tt.sh 1 3 5
------$* 效果------
1 3 5
------$@ 效果------
1
3
5

 在shell脚本传参时,参数中若包含空格,应该使用单引号或双引号将该参数括起来,以便脚本将此参数作为整体接收。

 

 在有参数时,可使用对参数进行校验的方式处理以减少不必要的错误。

if [ -n "$1" ];then
    echo "包含第一个参数"
else
    echo "未包含第一个参数"
fi

[ ]中与代码内容用空格隔开,以便让脚本区分。

你可能感兴趣的:(linux,运维)