获取用户输入的参数

函数可以读取用户传入的变量。例如$1 $2表示第一和第二个参数。$@表示所有变量

例如:

#!/usr/bin/env bash

function hello(){
    for NAME in $@
    do
        echo "Hello $NAME"
    done
}

hello Json Dan Ryan John

结果:

Hello Json
Hello Dan
Hello Ryan
Hello John

使用 read 命令获取用户输入

如果你希望在脚本运行时动态地从用户获取输入,可以使用 read 命令。

示例脚本 input.sh

#!/bin/bash

# 提示用户输入
echo "Enter your name:"
read name

# 提示用户输入年龄
echo "Enter your age:"
read age

echo "Hello, $name. You are $age years old."

执行脚本

bash input.sh

示例运行

Enter your name:
Alice
Enter your age:
30
Hello, Alice. You are 30 years old.

处理选项和参数

有时你可能需要处理更多的命令行选项和参数。可以使用 getopts 来解析这些选项。

示例脚本 options.sh

#!/bin/bash

while getopts "u:p:" opt; do
  case $opt in
    u) username=$OPTARG ;;
    p) password=$OPTARG ;;
    \?) echo "Invalid option -$OPTARG" >&2 ;;
  esac
done

echo "Username: $username"
echo "Password: $password"

执行脚本

bash options.sh -u myuser -p mypass

输出

Username: myuser
Password: mypass

检查参数是否存在

可以在脚本中检查某个参数是否已提供,通常通过判断 $#(参数数量)来实现。

示例脚本 check_params.sh

#!/bin/bash

if [ $# -lt 2 ]; then
  echo "Usage: $0 <param1> <param2>"
  exit 1
fi

param1=$1
param2=$2

echo "Param1: $param1"
echo "Param2: $param2"

执行脚本(参数不足时)

bash check_params.sh

输出

Usage: ./check_params.sh <param1> <param2>