我需要在两个不同的变量中保存两个命令行参数,并将所有变量全部放在第三个变量中。 我正在使用以下代码
while [ $# -ge 2 ] ; do
DirFrom=$1
Old_Ver=`basename $1`
shift
DirTo=$1
shift
pdct_code=$@
shift
done
如果我发送三个以上的参数,则此代码失败。请建议如何在pdct_code变量中保存第3个等等变量。
答案 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