2014-01-10 3 views
2

Я хочу сделать строку bash команд с перенаправлением и/или трубой и использовать ее для отображения строки команд или выполнения строки команд. Простая команда без перенаправления или работы pipe, но строка команд с перенаправлением или трубой не работает. Например,Как я могу создать команду bash с перенаправлением и трубой?

command="echo 1" 
$command 
echo "$command" 

будет отображать

1 
echo 1 

Однако

command="echo 1 | cat" 
$command 
echo "$command" 

будет отображать

1 | cat 
echo 1 | cat 

, но я хочу

1 
echo 1 | cat 

Аналогично для редиректа,

command="echo 1 | cat > 1.out" 
$command 
echo "$command" 

будет отображать

1 | cat > 1.out 
echo 1 | cat > 1.out 

, но я хочу

echo 1 | cat > 1.out 

новый файл с именем "1.out" с содержанием в нем 1 ,

Есть ли способ достичь того, что я хочу?

+4

(http://mywiki.wooledge.org/BashFAQ/050) –

+0

'cat' - это команда, которая получает имя файла/s как параметр/s, и вы пытаетесь передать в него' echo 1'. Что именно вы пытаетесь достичь? – alfasin

ответ

4

Если вы хотите, чтобы оболочка для оценки строки в качестве команды, скажите это сделать так: [! Я пытаюсь поставить команду в переменной, но сложные случаи всегда терпят неудачу]

eval "$command" 
echo "$command" 
Смежные вопросы