如何在不创建文件的情况下执行 shell 脚本?例如,假设我有以下脚本 ( testscript
):
#!/bin/bash
function run_free() {
free -m
}
run_free
然后我当然可以执行这个:sh testscript
我想 ovoid 创建一个文件。我试过了:
sh echo '#!/bin/bash
function run_free() {
free -m
}
run_free'
哪个不起作用。有任何想法吗?
如何在不创建文件的情况下执行 shell 脚本?例如,假设我有以下脚本 ( testscript
):
#!/bin/bash
function run_free() {
free -m
}
run_free
然后我当然可以执行这个:sh testscript
我想 ovoid 创建一个文件。我试过了:
sh echo '#!/bin/bash
function run_free() {
free -m
}
run_free'
哪个不起作用。有任何想法吗?
大多数解释器都有一个参数来指定要执行的代码。您可以使用它来调用特定的解释器并提供代码。例如:
(注意你需要一些分号,因为你没有换行符。)
perl
使用-e
,并python
使用-c
。您可以使用此处的文档来提供 SSH 脚本:
'-T' 选项禁用 TTY 分配。
我使用这种技术在我们的第三方服务之一上跨多个用户帐户运行标准脚本,该服务不允许通常可访问的可写 bin 目录。SSH here-document 方法避免了跨多个帐户复制(和维护)相同脚本的需要。
Yo dawg,我听说你喜欢 shell,所以我把 shell 放在你的 shell 中,这样你就可以 shell 了。
换句话说,您正在为您的
echo
命令生成一个 shell,然后只是在一行中回显所有内容。Shell 将其解释为只是一个 echo 命令。即使没有,所有内容都在一行中(尤其是 之后没有换行#!/bin/bash
)这一事实也会导致问题。在输入此回复时,我从您的评论中发现您将通过 ssh 运行命令。然后这样的事情应该有效:
您可以在 ssh 原始系统上创建脚本并将它们通过管道传输到 ssh 会话中
将您的示例放在本地脚本中 run_free
在远程主机上运行本地脚本。
你可以用 perl 做同样的事情