Я пишу сценарий 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"
в локальном окне, конечно.
Как мне избежать этого поведения?