Использование sh -c в терминале

514
John

У меня есть эта командная строка, которую я ввожу в терминал, и она работает как задумано:

dscl . -readall /Users UniqueID | awk '/^RecordName:/ ; /^UniqueID: / ' 

То, что я хочу сделать, это использовать sh -c "вставить строку команды здесь", и когда я пытаюсь использовать вышеприведенный оператор, он дает мне следующие ошибки:

awk: syntax error at source line 1 context is /^RecordName:/ >>> <<<  awk: illegal statement at source line 1 awk: illegal statement at source line 1 

Есть идеи, как бы я это исправить? Мне это нужно для программы в цель-с.

1

2 ответа на вопрос

4
user495470

Одинарные кавычки не препятствуют расширению переменных внутри двойных кавычек:

$ echo "a'$RANDOM'" a'23976' 

Вы можете заменить $на \$или 'с '\'':

$ sh -c "echo a b | awk ''" b $ sh -c 'echo a b | awk '\'''\' b 

Или используйте heredoc:

sh -s <<'END' echo a b | awk '' END 
1
Guru

У вашей awkкоманды нет закрытия '.

Моя ошибка, я просто забыл добавить это к вопросу, но это было в моем коде. John 12 лет назад 0