shell-位置参数超过10个之后的问题

作者: 风吹蛋生丶

1. 前言

  客户需要调用我们服务器的脚本,传递了超过10以上的位置参数, 传入参数后发现前9位的参数没什么问题,但到了10以后的位置参数就开始出现其他值。

一般不会传入这么多位置参数,该问题不常见

2. 示例脚本:

#!/bin/bash
echo $*
echo $1 $2 $3 $4 $5 $6 $7 $8 $9 $10 $11 $12 $13 $14

$* 表示执行脚本传入参数的列表(不包括$0)

执行结果

[root@hdss7-21 ~]# sh 1.sh a b c d e f g h i j k l m n 
a b c d e f g h i j k l m n
a b c d e f g h i a0 a1 a2 a3

3. 解决办法

问题出现的原因主要是当前shell脚本把
$10 当成了 $1 + 0
$11 当成了 $1 + 1
在编写shell的过程中, 将$10写成 ${10} $11写成${11}

#!/bin/bash
echo $*
echo $1 $2 $3 $4 $5 $6 $7 $8 $9 ${10} ${11} ${12} ${13} ${14}

执行结果

[root@hdss7-21 ~]# sh 1.sh a b c d e f g h i j k l m n 
a b c d e f g h i j k l m n
a b c d e f g h i j k l m n

4. 思考

如何不再出现这类问题, 就需要形成编写shell的习惯, 任何的位置参数用{} 括起来.

如有疑问,可留下评论.

posted @ 2020-12-08 10:37  风吹蛋生丶  阅读(145)  评论(0编辑  收藏  举报