shell脚本学习- 命令行参数处理

在bash中,可以用以下三种方式来处理命令行参数,每种方式都有自己的应用场景。

  • 1.直接处理,依次对1,2,...,$n进行解析,分别手工处理
    1. getopts来处理,单个字符选项的情况(如:-n 10 -f file.txt等选项)
    1. getopt,可以处理单个字符选项,也可以处理长选项long-option(如:--prefix=/home等)

提醒: 一般小脚本手工处理也许就够了,getopts能处理绝大多数的情况,getopt较复杂、功能也更强大。

本篇文章主要关注于“1.直接手工处理位置参数”

必须要要知道几个变量,

*    $0 :即命令本身,相当于C/C++中的argv[0]
*    $1 :第一个参数.
*    $2, $3, $4 ... :第2、3、4个参数,依次类推。
*    $#  参数的个数,不包括命令本身
*    $@ :参数本身的列表,也不包括命令本身
*    $* :和$@相同,但"$*" 和 "$@"(加引号)并不同,"$*"将所有的参数解释成一个字符串,而"$@"是一个参数数组。

一个实例demo: test.sh

#!/bin/bash
if [ $# -lt 1 ]; then
    echo "error.. need args"
    exit 1
fi
echo "commond is $0"
echo "args are:"
for arg in "$@"
do
    echo $arg
done

执行结果:

➜  58code ./test.sh 11 22 33
commond is ./test.sh
args are:
11
22
33
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容