语法错误:"("意外(期待"然后")

时间:2016-02-22 22:45:32

标签: bash if-statement ssh while-loop syntax-error

我遇到了bash脚本的麻烦。我试图通过ssh自动化将文件发送到我的覆盆子pi的过程。我想提示输入文件/目录的路径,然后将其复制到我的pi上的/home/pi/push目录。然后我想询问是否有另一个文件要发送,如果是,则再次循环,否则退出程序。出于明显的安全原因,我将IP地址归零。

done=0
while [ $done -lt 1 ]
do
    read -r -p "Path to file: " path
    spawn scp -r $path pi@000.00.000.00:/home/pi/push
    expect "assword:"
    send "password\r"
    interact

    read -r -p "Send another? [y/N] " response
    if [[ $response =~ ^([yY][eE][sS]|[yY])$ ]]
    then
        $done=1
    else
        echo "Ending file transfer."
    fi
done

如果您有更好的方法来实现这一点,那也会很棒!

1 个答案:

答案 0 :(得分:1)

只需在测试中使用or,或者在正则表达式中转义括号。此外,没有必要测试nocasematch设置的情况;并且除了这个要求之外,你甚至不需要正则表达式。

shopt -s nocasematch
...
if [[ "$response" = "yes" || "$response" = "y" ]]