shell 脚本如何传递并接受参数
2018-06-28| 程成| 1258| 0| Linux

shell 脚本中,传参基本上是必不可少的。那么如何向 shell 脚本传参呢?


测试代码如下:


#!/bin/bash
# 这是个测试脚本传参的测试例子

param1=$1
param2=$2
param3=$3

echo "执行的脚本名:$0";
echo "第一个参数为:$1";
echo "第二个参数为:${param2}";
echo "第三个参数为:$3";


输出结果如下:


image.png



除了上面的使用方式,我们经常还会用到这些:


参数处理说明
$#传递到脚本的参数个数
$*以一个单字符串显示所有向脚本传递的参数。
如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。
$$脚本运行的当前进程ID号
$!后台运行的最后一个进程的ID号
$@与$*相同,但是使用时加引号,并在引号中返回每个参数。
如"$@"用「"」括起来的情况、以"$1" "$2" … "$n" 的形式输出所有参数。
$-显示Shell使用的当前选项,与set命令功能相同。
$?显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。


















这种方法一般跑脚本常用。但是你如果希望你的脚本人性化一点,像下面这样有个友好的提示,该如何实现呢?


image.png


直接贴上代码:


#!/bin/bash
Start_Menu()
{
    echo "                                                                                   "
    echo "  ###############################################################################  "
    echo "     Run ./resetIP-v(version).sh Modify|Add                                        "
    echo "     Or Run ./resetIP-v(version).sh and Enter then input modify or add             "
    echo "     Read Before:                                                                  "
    echo "     You input add, 2 parameters required. [action] [IP]                      "
    echo "  ###############################################################################  "
    echo "                                                                                   "
    read -p "Enter (add IP): " action IP
}

hr()
{
    echo "                                                     "
    echo "-----------------------------------------------------"
    echo "                                                     "
}

Color_Text()
{
  echo -e " \e[0;$2m$1\e[0m"
}

Echo_Red()
{
    hr
  echo $(Color_Text "$1" "31")
}

Echo_Green()
{
    hr
  echo $(Color_Text "$1" "32")
}

FunAdd()
{
    Echo_Green "You input is : legal"
}

FunEmpty()
{
    Echo_Red "You input is : Illegal"
}

if [[ "${action}" == "" ]]; then
    Start_Menu
fi
if [[ "${action}" == "add" ]]; then
    FunAdd
else
    case "${action}" in
    Add)
        FunAdd
        ;;
    *)
        FunEmpty
        ;;
    esac
fi



以上操作就可以进行 shell 脚本的传参了。




×
作者:程成
QQ:492245711