美文网首页
shell-位置参数超过10个之后的问题

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

作者: 风吹蛋生丶 | 来源:发表于2020-12-07 17:47 被阅读0次

前言

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

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

示例脚本:

#!/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

解决办法

问题出现的原因主要是当前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

以后不再重复这个问题,需要形成编写shell的习惯, 位置参数用{} 括起来.

如有疑问,可留下评论.
原创简书作者: 风吹蛋生丶

相关文章

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

    前言 客户需要调用我们服务器的脚本,传递了超过10以上的位置参数, 传入参数后发现前9位的参数没什么问题,但到了1...

  • Linux Shell-位置参数变量

    位置变量 当我们执行一个Shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量。比如:./my...

  • 第2模块第1章13函数—关键参数

    关键参数必须放在位置参数之后

  • 抽象

    1.函数参数 分为位置参数和关键字参数,位置参数即定义了函数之后,需要根据定义的参数位置来进行传参,这样的话需...

  • Shell-传递参数,for循环

    我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本...

  • Python------*args和**kwargs

    总结: *args首先时把位置传值的参数传递完成后,多余的参数会被存储为一个元组,之后的默认参数无法按位置传值,除...

  • python函数定义时位置参数不能在关键词参数之后

    当位置参数在关键词参数之后时,会报如下错误: 因为在函数调用时,无法区分到底是把值赋给关键字参数还是赋给位置参数

  • splice(0)

    array.splice() 第一个参数制定位置,第二个参数指定删除的个数,之后的参数作为值插入到这个指定位置里面...

  • Dart中的函数

    定义函数 函数参数 可选参数{}中的参数是可选参数 位置参数[]中定义的参数是位置参数, 位置必须一一对应 默认参...

  • Flutter 中的一些区别

    1、可选的位置参数和可选的命名参数 可先的位置参数在 Flutter 中使用 [] 标记为可选位置参数,并放到参数...

网友评论

      本文标题:shell-位置参数超过10个之后的问题

      本文链接:https://www.haomeiwen.com/subject/wjetgktx.html