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

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

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

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

2
Куда делся завершающий символ новой строки из моей подстановки команд?
Следующий код лучше всего описывает ситуацию. Почему последняя строка не выводит завершающий символ новой строки? Вывод каждой строки показан в комментарии. Я использую 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" | xxd …

3
Перехват ошибок при подстановке команд с использованием «-o errtrace» (т.е. установить -E)
Согласно этому справочному руководству : -E (также -o errtrace) Если установлено, любая ловушка в ERR наследуется функциями оболочки, подстановками команд и командами, выполняемыми в среде подоболочки. Ловушка ERR обычно не наследуется в таких случаях. Тем не менее, я должен интерпретировать это неправильно, потому что следующее не работает: #!/usr/bin/env bash # …

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

2
Вложенные кавычки в подоболочках
Скажем, я должен использовать кавычки для инкапсуляции вывода subshell, например: DATA="$(cat file.hex | xxd -r)" Но мне нужно вложить такие вещи, как: DATA="$(cat file.hex | xxd -r | tr -d \"$(cat trim.txt)\")" Я не могу использовать одинарные кавычки, потому что они не раскрывают переменные внутри них. Экранирование кавычек не работает, …

1
Как ksh93 избегает разветвлений в подстановке команд
Данный cmd='fun(){ echo "$@"; }; fun $(fun $(fun hi))' снаряды, как правило, должны сделать 2 вилки, чтобы это произошло strace-f(){ strace -f "$@" 2>&1; }; for sh in dash bash zsh ksh; do printf "$sh\t" ; strace-f $sh -c "$cmd" |grep -e clone -e fork -c; done кроме kshгероически делает …

3
Многовариантный для циклов
Есть ли способ указать несколько переменных (не только целые числа) в forциклах в bash? У меня может быть 2 файла, содержащие произвольный текст, с которым мне нужно было бы работать. Что мне функционально нужно, так это: for i in $(cat file1) and j in $(cat file2); do command $i $j; …

3
Как я могу генерировать аргументы для другой команды с помощью подстановки команд
Вслед за: неожиданное поведение при подстановке команд оболочки У меня есть команда, которая может принять огромный список аргументов, некоторые из которых могут законно содержать пробелы (и, возможно, другие вещи) Я написал скрипт, который может генерировать эти аргументы для меня, с кавычками, но я должен скопировать и вставить вывод, например ./somecommand …

4
Понимание подстановки команд чтения файлов в Bash
Я пытаюсь понять, как именно Bash обрабатывает следующую строку: $(< "$FILE") Согласно странице руководства Bash, это эквивалентно: $(cat "$FILE") и я могу следовать линии рассуждений для этой второй строки. Bash выполняет раскрытие переменной $FILE, вводит подстановку команды, передает значение $FILEto cat, cat выводит содержимое $FILEна стандартный вывод, подстановка команды завершается …

2
Назначения похожи на команды со статусом выхода, кроме случаев, когда есть подстановка команд?
Смотрите следующие примеры и их вывод в оболочках POSIX: false;echo $?или false || echo 1:1 false;foo="bar";echo $?или foo="bar" && echo 0:0 foo=$(false);echo $?или foo=$(false) || echo 1:1 foo=$(true);echo $?или foo=$(true) && echo 0:0 Как указано в ответе с наибольшим количеством голосов на /programming/6834487/what-is-the-variable-in-shell-scripting : $? используется для поиска возвращаемого значения …

2
Как определяется статус возврата присвоения переменной?
Я видел конструкции в сценариях, таких как это: if somevar="$(somecommand 2>/dev/null)"; then ... fi Это где-то задокументировано? Как определяется возвращаемый статус переменной и как она связана с подстановкой команд? (Например, получу ли я такой же результат с if echo "$(somecommand 2>/dev/null)"; then?)

3
Может ли подстановка команд быть вложенной в подстановку переменных?
Я хотел бы использовать подстановку переменных в конкретной строке, к которой я обращаюсь через команду. Например, если я скопирую что-то в буфер обмена, я получу к нему доступ следующим образом. $ xclip -o -selection clipboard Here's a string I just copied. Если я назначу его переменной, то я могу сделать …

2
если команда в find -exec
Я просто пытался перечислить все каталоги и файлы в текущем каталоге, а также написать, если это файл или каталог, с помощью следующей команды: find -exec echo `echo {} : ;if [ -f {} ]; then echo file; else echo directory;fi` \; Я знаю, что это глупая команда, я могу использовать …

1
Почему нет новой строки в конце цитирования подоболочки и передачи результатов в echo?
Когда я делаю ls | grep pngвывод grep: 2015-05-15-200203_1920x1080_scrot.png 2015-05-16-025536_1920x1080_scrot.png (Имя файла, символ новой строки, имя файла, символ новой строки) затем echo $(ls | grep png)выводит: 2015-05-15-200203_1920x1080_scrot.png 2015-05-16-025536_1920x1080_scrot.png (имя файла, пробел от разделения слов, имя файла, перевод строки !! из эха !!) Это все нормально, но когда я делаю это, …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.