我有一个Bash脚本,由于环境变量和配置,实际上仅在实际登录到会话时才能读取,因此需要从交互式提示中运行。下面的例子:
好的
me@client:~$ ssh box
user@box:~$ /usr/local/bin/myscript
坏的
me@client:~$ ssh box "/usr/local/bin/myscript"
我可以在脚本中使用任何Bash-fu来确定它是否通过单行SSH命令运行吗?
您可以只检查是否有一个终端连接到标准输入(这就是tty
命令的作用)。将这些行添加到脚本中:
if ! tty >/dev/null; then
echo "Must be run from a tty"
exit 1
fi
除非正确运行,否则您的脚本现在将退出并显示错误:
$ ssh badabing ~/scripts/a.sh
Must be run from a tty
$ ssh badabing
terdon@badabing ~ $ ~/scripts/a.sh
Works!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句