以连字符开头的bash脚本命令行参数将被忽略

时间:2011-03-14 19:20:13

标签: linux bash

我编写了一个非常简单的bash脚本来同步文件,但是当参数为:-e“ssh -p 1234”时,我无法让脚本正确读取参数。我意识到我需要转义引号以使它们正确显示,所以:-e \“ssh -p 1234 \”,但-e被忽略。我尝试引用它,如果我回显$ option,它会显示它,但它仍然无法正常工作。对我所做错的任何建议都将不胜感激。

#!/bin/bash
host=`hostname -s`
if [ "$host" = "machine1" ]; then
        transfer_to="machine2";
else
        transfer_to="machine1";
fi

# use $option when passing in. i.e --delete, -e "ssh -p 1234"
option="$@"
rsync -va $option /var/sync_dir/ $transfer_to:/var/sync_dir --progress

1 个答案:

答案 0 :(得分:1)

您应该直接使用$@或将其复制到数组:

rsync -va "$@" /var/sync_dir/ $transfer_to:/var/sync_dir --progress

option=("$@")
rsync -va "${option[@]}" /var/sync_dir/ $transfer_to:/var/sync_dir --progress