所以,我正在尝试运行以下两个脚本; mainscript.sh到远程登录并执行attachment.sh但问题是当它执行时我没有使用attach.sh上的选项设置,它只是回显选项列表。我想我对i / o重定向有些不对劲。我是新手,所以任何帮助都非常感激。
mainscript.sh
#!/bin/bash
echo "Please enter ther server name : "
read servername
ssh $servername "bash -s" < attached.sh
attached.sh
#!/bin/bash
OPTIONS="redhat Uptime logfile quit"
select opt in $OPTIONS; do
function redhat {
cat /etc/redhat-release
}
function Uptime {
uptime
}
function logfile {
cat /var/log/messages | less
}
function quit {
exit
}
if [ "$opt" = "redhat" ]; then
redhat
elif [ "$opt" = "Uptime" ]; then
uptime
elif [ "$opt" = "logfile" ]; then
logfile
elif [ "$opt" = "quit" ]; then
quit
else
clear
echo "bad option"
fi
done
答案 0 :(得分:1)
标准输入被重定向为来自脚本文件;脚本将自行读取(并获取EOF,因为shell在运行时已经读过脚本)。
一个有点笨拙但强大的解决方法是将脚本文件scp
发送到远程主机,然后执行它。你也可以使用不同的文件描述符,以便保持标准输入连接到终端,但它往往变得棘手。