向脚本传递参数

我们知道,使用位置变量可以获取传递给脚本的参数,但是位置变量最多只能获取9个参数,当要使用的选项、参数大于9时,位置变量就无能为力了。

一、使用shift命令处理参数

参数操作命令shift的用法比较特殊,它没有选项和参数,直接运行命令即可。运行shift命令时,位置变量就像一个可以移动的“指针”,每执行一次,位置变量指向的参数将向后移动一位。即使用shift命令后,位置变量$1的值等于使用shift命令前$2的值,$2的值等于使用shift命令前$3的值,以此类推。随着shift命令的使用,位置变量$1的值会不断变化,直到移动到最后一个参数之后。

(1)演示shift命令操作位置变量的原理和使用方法的示例脚本:

这个示例脚本会先判断传递给脚本的参数个数是否等于0,如果等于0就调用usage函数输出错误信息并退出。如果参数个数不为0,脚本将使用while循环和shift命令逐一输出所有参数。

[root@localhost shell]# cat shift_param.sh 
#!/bin/bash

#This is a example script.
#2013-12-18

function usage()
{
        echo "Error: Must huave a parameter."
        echo "$0 parameter..."
        return 1
}

if [ $# = 0 ]
 then
        usage
        exit 1
fi

I=1
while [ $# != 0 ]
 do
        echo "$"$I"="$1
        shift
        I=`expr $I + 1`
done
exit 0
[root@localhost shell]# ./shift_param.sh 1 2 3 4 5 6 7 8 9 10
$1=1
$2=2
$3=3
$4=4
$5=5
$6=6
$7=7
$8=8
$9=9
$10=10

二、使用shift命令处理选项参数

对于一个脚本编写者而言,脚本参数的含义与命令中的参数含义不同。脚本的参数应该包括类似于命令选项的选项参数,以及脚本需要操作的对象参数,它们都以参数的形式传递给脚本。因此编写脚本时,如果为脚本添加了选项参数,在处理脚本参数时,应该将选项参数和脚本参数分开。

一个典型的处理脚本的选项参数和对象参数的格式如下:

while [ $# -gt 0 ]
do
    case $1 in
    -a) #功能语句块
        #出现选项a时应该执行的语句
       shift
       ;;
    -b) #功能语句块
         #出现选项b时执行的语句
         shift
         ;;
    -c) #功能语句块
         #出现选项c时执行的语句
         shift
         ;;
    esac
done
原文地址:https://www.cnblogs.com/nufangrensheng/p/3479770.html