【问题标题】:Accessing command line arguments beyond the 9th in bash script在 bash 脚本中访问第 9 个之后的命令行参数
【发布时间】:2012-10-07 18:39:32
【问题描述】:

我正在尝试在 bash 中读取命令行参数,但我在第 10 列有问题要阅读。 这是我的示例脚本:

#-------------------------------------------------------
#!/bin/bash
an=$2  mn=$4  dy=$6  der=$8  new=$10  sec=(${12} ${13})
echo $an $mn  $dy   $der  $new  $sec 
#--------------------------------------------------------

我已经将上面的脚本“test.sh”运行为

./test.sh -yr cat  -mn Jan  -dy  tuesday  -der tt  -new car -sec 001 001

输出是:

cat Jan tuesday tt -yr0 001

但对于变量 $new ($10),答案应该是 car,但我得到的是 -yr0

知道为什么吗?

【问题讨论】:

  • 你应该考虑使用 getopt(s)

标签: bash parameter-passing


【解决方案1】:

new=$10 给你$1(即'yr')附加0。你需要一些大括号:${10}

【讨论】:

    【解决方案2】:

    这里是修复:

    #!/bin/bash
    an=$2  mn=$4  dy=$6  der=$8  new=${10}  sec="${12} ${13}"
    echo $an $mn  $dy   $der  $new  $sec 
    
    1. 使用 ${10}
    2. 而不是 $10,即附加 0 的“$1”
    3. sec="..." 而不是使用括号,除非您打算使用数组

    【讨论】:

      猜你喜欢
      • 2014-12-13
      • 1970-01-01
      • 2020-12-31
      • 2015-01-17
      • 2012-09-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多