所以我有一个文件。当前看起来像这样:
#!/usr/bin/env python3
print(1)
我想在远程计算机上调整它。简单的方法是运行
< test.py ssh server-name python3
但是,如果我不知道它是python脚本(或者我可能不知道它是python3而不是python2),并且想尊重它的shebang,该怎么办?
我尝试了
< test.py ssh server-name exec /dev/stdin
但是它失败了,因为/dev/stdin
无法执行
为简单起见,我们假设两个服务器都是最新的Ubuntu。
所以问题是如何运行尊重脚本的任意脚本?
答案 0 :(得分:1)
使用shebang行的操作系统是:请参阅execve(2)
手册页。脚本文件必须是可执行文件,位于系统上。
您可以从脚本中提取它以便在远程使用:未经测试:
shebang=$(sed -n '1 {s/^#!//p; q}' test.py)
ssh server-name "$shebang -" < test.py