Назначение вывода команды для переменной оболочки - PullRequest
7 голосов
/ 30 марта 2012

Я пытаюсь назначить вывод команды на обрезку переменной, однако наталкиваюсь на странную проблему.Я использую оболочку tcsh.

$echo $0
tcsh

Это команда, которую я выполняю:

$set a=`cut -f2 -d' ' test.txt`
Missing }.    //This is the output I am getting

Теперь файл очень прост (ну, это не тот файл, над которым я работал)но я уменьшил проблему до этого.)

Test.txt:

{ {corner

Вот и все!Это файл.Если я изменю файл следующим образом:

{ {corner}

Оператор работает, но «a» получает следующее значение:

$echo $a
corner   //Please note its not {corner} but corner

Следовательно, я думаю, что оболочка пытается выполнить {corner каккоманда и так как он пропускает закрывающую скобку, жалуется.У кого-нибудь есть идеи, почему это показывает такое поведение?Насколько я понимаю, он должен просто назначить вывод cut переменной, но похоже, что он присваивает ее рекурсивно!Новичок

1 Ответ

7 голосов
/ 30 марта 2012

Вы должны заключить его в двойные кавычки

set a="`cut -f2 -d' ' test.txt`"

То же самое относится к таким применениям, как echo

echo "$a"

выход

{corner
...