我正在编写旨在执行某些命令的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/

10-16 04:07