2

我正在尝试在 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

知道为什么吗?

4

2 回答 2

4

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

于 2012-10-17T13:34:47.363 回答
3

这是修复:

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