将参数保存在传递给shell脚本的不同变量中

时间:2014-04-18 13:19:10

标签: linux bash shell

我需要在两个不同的变量中保存两个命令行参数,并将所有变量全部放在第三个变量中。 我正在使用以下代码

while [ $# -ge 2 ] ; do
  DirFrom=$1
  Old_Ver=`basename $1`
  shift
  DirTo=$1
  shift
  pdct_code=$@
  shift
done

如果我发送三个以上的参数,则此代码失败。请建议如何在pdct_code变量中保存第3个等等变量。

2 个答案:

答案 0 :(得分:2)

当你有两个以上的参数时,你不会进入循环。你可以像这样颠倒参数限制:

while [ $# -ge 3 ]; do
    :
done

或者更好的是解析你的参数而不用循环。例如:

DirFrom="$1"
Old_Ver=`basename "$1"`
DirTo="$2"
pdct_code="$*"

答案 1 :(得分:0)

不需要循环或shift。请注意,pdct_code可能需要是一个数组,以保留传递给脚本的确切参数。

if [ $# -ge 2 ]; then
    DirFrom=$1
    Old_Ver=$(basename "$1")
    DirTo=$2
    pdct_code="${@:3}"
    # pdct_code=( "${@:3}" )
done