i具有一个bash函数,该功能将数组作为参数,并执行多个命令。
基于用户输入,我想在本地或远程计算机上运行此方法中的所有命令。它在命令中有许多引号,并与"回荡。
This is how I am invoking the function right now:
run_tool_commands "${ARGS[@]}"
function run_tool_commands {
ARGS=("$@")
.. Loads of commands here
}
if [ case 1 ]; then
# run locally
else
# run remotely
fi
这似乎很有帮助,但是如果我将方法文本输送到"此处文档",这是可能的。
如果
- 在远程系统上也存在所有要在
run_tool_commands
下执行的命令, - 所有命令都是可执行的,&不是别名/功能
- 所有这些拒绝物都在默认路径中。(无需源。BashRC或远程上的任何其他文件。)
那么,也许此代码可能有效:(未测试):
{ declare -f run_tool_commands; echo run_tool_commands "${ARGS[@]}"; } | ssh -t user@host
或
{ declare -f run_tool_commands;
echo -n run_tool_commands;
for arg in "${ARGS[@]}"; do
echo -ne ""$t" ";
done; } | ssh -t user@host
使用循环,以保存围绕参数的报价。(可能需要也可能不需要,未测试。)