当且仅当服务存在时,我怎样才能停止服务,这意味着我希望仅在服务存在、运行但无法停止时才收到错误代码。当服务不存在或者服务器已停止或成功停止时,我不会收到错误代码。
systemctl stop foobar.service || true
将吞掉任何停止正在运行的服务的失败尝试,这太激进了。目的是确保服务不会运行,并且仅在无法停止时出错。
当且仅当服务存在时,我怎样才能停止服务,这意味着我希望仅在服务存在、运行但无法停止时才收到错误代码。当服务不存在或者服务器已停止或成功停止时,我不会收到错误代码。
systemctl stop foobar.service || true
将吞掉任何停止正在运行的服务的失败尝试,这太激进了。目的是确保服务不会运行,并且仅在无法停止时出错。
此函数将使用 cURL 或 wGet 下载脚本并使用其他参数执行它:
wexec() {
url=$1
shift
if command -v "curl" >/dev/null 2>&1; then
curl -s $url | bash -s -- $@
elif command -v "wget" >/dev/null 2>&1; then
wget -qO- $url | bash -s -- $@
else
echo "No curl or wget found."
return 1
fi
}
我想从服务器下载并运行以下脚本,并使用传递的参数在本地运行它:
#!/usr/bin/env bash
hello() {
echo Hello World!
}
echo Arguments: $@
我也希望该hello
函数在本地环境中可用,但它不是,因为我在一个子shell new shell中定义了它,所以调用wexec http://example.org/my-remote-script.sh a1 a2 a3; hello
会成功输出Arguments: a1 a2 a3
,但失败hello: command not found
。
有没有办法从本地环境发送参数并仍然从远程脚本接收函数?