Вопросы с тегом «command-substitution»

Вопросы о подстановке команд оболочки (например, $ (команда) или `команда`), их механизме, правильном синтаксисе и т. Д. Не следует путать с псевдонимами.

126
Цитирование в $ (подстановка команд) в Bash

В моей среде Bash я использую переменные, содержащие пробелы, и я использую эти переменные в подстановке команд. К сожалению, я не могу найти ответ на SE. Как правильно указать мои переменные? И как мне это сделать, если они вложенные? DIRNAME=$(dirname "$FILE") или я цитирую вне подстановки?...

119
Передать вывод предыдущей команды next в качестве аргумента

У меня есть команда, которая выводит данные в stdout ( command1 -p=aaa -v=bbb -i=4). Выходная строка может иметь следующее значение: rate (10%) - name: value - 10Kbps Я хочу получить этот вывод, чтобы сохранить этот показатель (я думаю, что труба будет полезна здесь). И, наконец, я хотел бы, чтобы...

117
Как я могу выполнить `date` внутри задания cron?

Я хочу создать файл журнала для скрипта cron с текущим часом в имени файла журнала. Это команда, которую я пытался использовать: 0 * * * * echo hello >> ~/cron-logs/hourly/test`date "+%d"`.log К сожалению, я получаю это сообщение при запуске: /bin/sh: -c: line 0: unexpected EOF while looking...

35
Понимание обратной черты (`)

Я пробую команду $ b=5; echo `$b`; -bash: 5: command not found но он не печатает 5, как это должно быть. Что мне здесь не хватает? Что `(backquote / backtick) означает в командах? кажется, говорит, что `оценивает команды внутри и заменяет их...

30
Подстановка команд: разделение на новую строку, но не пробел

Я знаю, что могу решить эту проблему несколькими способами, но мне интересно, есть ли способ сделать это, используя только встроенные средства bash, и если нет, каков наиболее эффективный способ сделать это. У меня есть файл с содержимым, как AAA B C DDD FOO BAR под этим я имею в виду только...

25
Почему командная подстановка оболочки поглощает завершающий символ новой строки?

Как в следующем примере, и как в моем недавнем вопросе в bash, куда ушел завершающий символ новой строки? Я хочу знать, "почему" это происходит x="$(echo -ne "a\nb\n")" ; echo -n "$x" | xxd -p # Output is: 610a62 # The trailing newline from the 'echo' command # has been "deleted" by Command...

23
В чем разница между `curl | sh` и `sh -c“ $ (curl) »`?

Этот вопрос был перенесен из-за сбоя сервера, поскольку на него можно ответить в Unix и Linux Stack Exchange. Мигрировал 2 года назад . Например, один из простых способов установки Docker: curl -sSL https://get.docker.com/ | sh Тем не менее, я также видел некоторые из них, которые выглядят так (на...

21
Почему функция не вернется, пока не закончится фоновый процесс?

Рассмотрим этот скрипт: #!/bin/bash function start { leafpad & echo $! } PID=$(start) echo "PID is $PID" Сценарий не продолжается после закрывающей фигурной скобки, пока не завершится процесс листовки, даже если это фоновый процесс. Почему это? Можно ли запустить фоновый процесс из...

20
вложенные двойные кавычки в однолинейных с высоким рейтингом

StackOverflow ответ с> 3.5K голосов показывает этот один вкладыш для присвоения DIRдиректории текущего скрипта Баша: DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" Я озадачен вложенными двойными кавычками. Насколько я могу судить, следующие фрагменты заключены в двойные кавычки:...

20
Что POSIX требует для цитируемых здесь документов внутри подстановки команд?

В этом вопросе кто-то сообщает о проблеме, используя документ here со словом в кавычках в кавычках внутри $(...)подстановки команд , где обратный слеш \в конце строки внутри документа запускает продолжение строки, соединяющей строки , в то время как тот же документ здесь вне подстановки команд...

17
Как правильно заключить в кавычки $ (команда $ arg)?

Самое время решить эту головоломку, которая беспокоила меня годами ... Я встречался с этим время от времени и думал, что это путь: $(comm "$(arg)") И думал, что мое мнение было решительно подтверждено опытом. Но я больше не уверен в этом. Shellcheck тоже не может определиться . Это оба: "$(dirname...

16
Использование сгенерированного списка имен файлов в качестве списка аргументов - с пробелами

Я пытаюсь вызвать скрипт со списком имен файлов, собранных find. Ничего особенного, просто что-то вроде этого: $ myscript `find . -name something.txt` Проблема в том, что некоторые пути содержат пробелы, поэтому при раскрытии аргумента они разбиваются на два недопустимых имени. Обычно я бы заключал...

16
Есть ли причина использовать или учить замену новым разработкам?

Насколько я понимаю, более современный $(...)синтаксис подстановки команд предпочтительнее старого `синтаксиса из-за более простого и менее подверженного ошибкам вложения и экранирования синтаксиса. Кроме того, кажется, что большинство /bin/shоболочек в современном стиле поддерживают $(…): удар Ash...

15
Почему такая разница во времени выполнения echo и cat?

Ответ на этот вопрос заставил меня задать еще один вопрос: я думал, что следующие скрипты делают то же самое, а второй должен быть намного быстрее, потому что первый использует catтот, который должен открывать файл снова и снова, а второй открывает только файл один раз, а затем просто выводит...

15
Куда делся завершающий символ новой строки из моей подстановки команд?

Следующий код лучше всего описывает ситуацию. Почему последняя строка не выводит завершающий символ новой строки? Вывод каждой строки показан в комментарии. Я использую GNU Bash, версия 4.1.5 echo -n $'a\nb\n' | xxd -p # 610a620a x=$'a\nb\n' ; echo -n "$x" | xxd -p # 610a620a echo -ne "a\nb\n" |...

14
grep файлы из списка

Я пытаюсь запустить grep для списка из нескольких сотен файлов: $ head -n 3 <(cat files.txt) admin.php ajax/accept.php ajax/add_note.php Однако, несмотря на то, что я искал строку, которая, как мне известно, находится в файлах, следующее не ищет файлы: $ grep -i 'foo' <(cat files.txt) $ grep...

14
Перехват ошибок при подстановке команд с использованием «-o errtrace» (т.е. установить -E)

Согласно этому справочному руководству : -E (также -o errtrace) Если установлено, любая ловушка в ERR наследуется функциями оболочки, подстановками команд и командами, выполняемыми в среде подоболочки. Ловушка ERR обычно не наследуется в таких случаях. Тем не менее, я должен интерпретировать это...