我编写了一个非常简单的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
答案 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