主页 > 其他  > 

bash脚本----传参的处理

bash脚本----传参的处理

Linux脚本:Bash脚本看这一篇就够了-CSDN博客

脚本传参: ./my_script.sh arg1 arg2 arg3

使用以下几个变量进行处理:

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

(1)脚本传参的个数:

"$#" 用于表示传递给脚本的**位置参数(positional arguments)**的数量。

        位置参数是指在命令行中直接跟随脚本名称的参数。仅计算位置参数,不包括脚本名称本身。例如,./script.sh 中的 script.sh 不算作参数。

if [ "$#" -lt 4 ]; then xxx else xxx fi (2)长选项、短选项

$ command  [option]  [paraments]     

对于选项(option)类型有两种:

1)短选项(short option):由一个连字符和一个字母构成,例如:-a, -s等; 2)长选项(long options):由两个连字符和一些大小写字母组合的单词构成,例如:--size,--help等。

短选项:-n  -m 也算是参数。

./arg_info.sh -n 1 -m 2 arg1 -n arg2 1 arg3 -m arg4 2 arg_num =4 (3)改变参数索引:shift

在 Bash 脚本中,shift 是一个内置命令,用于操作脚本的位置参数($1、$2、$3 等)。它的主要功能是将位置参数向左移动(即“移位”),从而改变参数的索引位置。这在处理命令行参数时非常有用,尤其是在循环中逐个处理参数时。

每次执行 shift 命令时,位置参数 $1 会被丢弃,其他参数的索引会依次向前移动。

./my_script.sh -n 1 -m 2 -s 3 while [ -n "$1" ] #检查参数1是否为空 do case "$1" in #根据当前参数1的值匹配不同的选项,并执行相应的逻辑 -n) xxx shift;; -m) xxx shift;; *) xxx esac shift done

./script.sh a b c d

在脚本中,位置参数的初始状态如下:

$1 = a

$2 = b

$3 = c

$4 = d

shift

执行shift指令后,参数的索引会向前移动一位:

$1 = b

$2 = c

$3 = d

$4 不再存在(被丢弃)

再次执行shift指令后,

$1 = c

$2 = d

$3 不再存在(被丢弃)

标签:

bash脚本----传参的处理由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“bash脚本----传参的处理