Shell中获取参数

Shell中获取参数

如果只需要传入参数,基本上可以使用$n来取参数,注意n是从1开始的整数

$0 指向的是脚本的名字

$ cat myscript
#!/bin/bash
echo "First arg: $1"
echo "Second arg: $2"
$ ./myscript hello world
First arg: hello
Second arg: world

但是有时需要使用Option来解析参数,并打印帮助信息,下面给出一个简单的例子

#!/bin/bash

helpFunction()
{
   echo ""
   echo "Usage: $0 -a parameterA -b parameterB -c parameterC"
   echo -e "\t-a Description of what is parameterA"
   echo -e "\t-b Description of what is parameterB"
   echo -e "\t-c Description of what is parameterC"
   exit 1 # Exit script after printing help
}

while getopts "a:b:c:" opt
do
   case "$opt" in
      a ) parameterA="$OPTARG" ;;
      b ) parameterB="$OPTARG" ;;
      c ) parameterC="$OPTARG" ;;
      ? ) helpFunction ;; # Print helpFunction in case parameter is non-existent
   esac
done

# Print helpFunction in case parameters are empty
if [ -z "$parameterA" ] || [ -z "$parameterB" ] || [ -z "$parameterC" ]
then
   echo "Some or all of the parameters are empty";
   helpFunction
fi

# Begin script in case all parameters are correct
echo "$parameterA"
echo "$parameterB"
echo "$parameterC"
### Shell获取参数的方法 在 Shell 脚本中可以通过 `$n` 来访问传递给脚本的位置参数,其中 `n` 是大于等于 0 的整数。具体来说: - `$0` 表示当前执行的脚本文件名[^2]。 - `$1`, `$2`, ... 则分别表示第一个、第二个等命令行参数。 对于更复杂的场景,比如带有选项标志 `-f` 或者 `-d` 这样的情况,则建议采用 `getopts` 函数来解析这些短横线开头的形式化参数。下面给出两个具体的例子展示这两种方法的应用。 #### 方法一:通过位置变量直接读参数 当只需要简单地按顺序接收固定数量的参数时,可以直接利用上述提到的位置变量来进行处理。这里有一个简单的实例用于说明如何打印出传入的第一个和第二个参数: ```bash #!/bin/bash echo "脚本${0} 第一个参数${1} 第二个参数${2}" ``` 此段代码会在运行时输出形如 “脚本./test.sh 第一个参数1 第二个参数2”的信息[^1]。 #### 方法二:使用 getopts 解析带选项的参数 如果希望支持像 `-f file.txt -d /path/to/dir/` 这样形式化的参数输入,则应该考虑使用 `getopts` 命令。它允许定义一系列可能的有效选项以及对应的动作逻辑。下面是另一个例子展示了怎样用 `getopts` 处理多个可选参数的情况: ```bash #!/bin/bash while getopts ":f:d:" opt; do case ${opt} in f ) echo "-f was triggered, Parameter: $OPTARG";; d ) echo "-d was triggered, Parameter: $OPTARG";; \? ) echo "Invalid option: -$OPTARG" >&2;; : ) echo "Option -$OPTARG requires an argument." >&2;; esac done shift $(($OPTIND -f` 和 `-d` 开头后面跟随的具体路径或文件名作为各自的参数值[^4]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值