• 向脚本传递参数


    我们知道,使用位置变量可以获取传递给脚本的参数,但是位置变量最多只能获取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
  • 相关阅读:
    LeetCode 1122. Relative Sort Array (数组的相对排序)
    LeetCode 46. Permutations (全排列)
    LeetCode 47. Permutations II (全排列 II)
    LeetCode 77. Combinations (组合)
    LeetCode 1005. Maximize Sum Of Array After K Negations (K 次取反后最大化的数组和)
    LeetCode 922. Sort Array By Parity II (按奇偶排序数组 II)
    LeetCode 1219. Path with Maximum Gold (黄金矿工)
    LeetCode 1029. Two City Scheduling (两地调度)
    LeetCode 392. Is Subsequence (判断子序列)
    写程序判断系统是大端序还是小端序
  • 原文地址:https://www.cnblogs.com/nufangrensheng/p/3479770.html
Copyright © 2020-2023  润新知