我想在远程机器上运行我的 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
。因此改为option
,opt
一切就都好了。
#!/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