我正在编写旨在执行某些命令的bash脚本,并且根据某些标志,该命令应在本地或远程执行。该命令的输出应重定向到某个文件,并且此文件应位于执行命令的框上,即,如果命令是远程执行的,则应位于远程框上。
我正在尝试类似的事情
#!/bin/bash
REMOTE=1
function f
{
CMD="$@"
if [ "${REMOTE}" == "1" ]
then
ssh some_host "$CMD"
else
$CMD
fi
}
# This executes "echo huhu" remotely and redirects the output into "out" on the remote box.
REMOTE=1 f echo huhu \> out
# This executes "echo haha > out" remotely (without redirection).
REMOTE=0 f echo haha \> out
当然,当我不逃避
>
符号时,f的任何输出都将重定向到本地框中的"out"
。我如何避免这种行为?
最佳答案
Don't use eval
;请改用arrays。还有一个solution for the SSH command。
关于bash - 字符串重组命令的IO重定向,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7795849/