在远程计算机上运行 shell 脚本时选择命令不起作用

在远程计算机上运行 shell 脚本时选择命令不起作用

我想在远程机器上运行我的 shell 脚本,我需要用户为一些变量赋值,为此我们在本地机器上运行脚本时使用 Read 命令,但我在远程机器上运行脚本时使用相同的命令,但它对我来说不起作用。如何使用 Read 命令在远程机器上运行脚本?

示例代码:

restore (){
        echo "Restore"
}

deploy () {
        echo "Deploy"
}


echo "Select any option to proceed..."
read opt
case $opt in

        restore)
        restore;
        break;;

        deploy)
        deploy;
        break;;
esac

当在本地机器上运行脚本时,此代码工作正常。

提前致谢 !

答案1

如果您告诉bash从 读取命令stdin(这是-s选项的作用),然后重定向其标准输入,则您无法再通过标准输入提供输入。

您应该将其视为一个普通脚本:

ssh [email protected] bash /root/BackupShellScript/remote.sh

/usr/local/etc/BackupShellScript/configuration.conf从您的脚本中获取源代码,而不是通过cat进程替换来解决问题。

答案2

该脚本甚至在本地都无法运行 - 更不用说使用 ssh 了。

问题在于你将结果放入option然后使用case $opt。因此改为optionopt一切就都好了。

#!/bin/bash

restore (){
        echo "Restore"
}

deploy () {
        echo "Deploy"
}

echo "Select any option to proceed..."
select opt in "deploy" "restore" ; do
case $opt in

        restore)
        restore;
        break;;

        deploy)
        deploy;
        break;;
esac
done

相关内容