bash脚本中的命令行参数

时间:2012-10-17 13:29:08

标签: bash stdin

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

知道为什么吗?

yacob

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分: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}
  2. 代替$ 10,即附加0的“$ 1”
  3. sec =“...”而不是使用括号,除非您打算使用数组