Запитання з тегом «command-substitution»

Питання щодо підстановки командної оболонки (наприклад, $ (команда) або `команда '), її механізму, правильного синтаксису тощо. Не слід плутати їх з псевдонімом.

5
Використання згенерованого списку імен як списку аргументів - з пробілами
Я намагаюся викликати сценарій зі списком назви файлів, зібраним користувачем find. Нічого особливого, просто щось таке: $ myscript `find . -name something.txt` Проблема полягає в тому, що деякі імена шляхів містять пробіли, тому вони розбиваються на два недійсні імена при розширенні аргументів. Зазвичай я б оточував імена лапками, але сюди …

7
Чому існує така різниця у часі виконання ехо та кота?
Відповідаючи на це запитання, я змусив поставити ще одне запитання: я вважав, що наступні сценарії роблять те саме, а другий повинен бути набагато швидшим, тому що перший використовує 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 -p …

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 foo was found Мені …

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


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

3
Як я можу генерувати аргументи для іншої команди за допомогою підстановки команд
Слідом за: несподівана поведінка підстановки командної оболонки У мене є команда, яка може взяти величезний перелік аргументів, деякі з яких можуть законно містити пробіли (і, можливо, інші речі) Я написав сценарій, який може генерувати ці аргументи для мене з цитатами, але я повинен скопіювати та вставити вихід, наприклад ./somecommand <output …

4
Розуміння заміни команди Баша на читання файлів
Я намагаюся зрозуміти, як саме Баш ставиться до наступного рядка: $(< "$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. Якщо я призначу його змінній, то я можу …

1
Чому не існує нового рядка в кінці цитування нижньої частини і передачі результатів повторюється?
Коли я роблю 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.