Вопросы с тегом «shell-script»

Вопросы о сценариях оболочки, исполняемых файлах, которые интерпретируются оболочкой (bash, zsh и т. Д.).

3
Скобки в условии if: почему я получаю синтаксические ошибки без пробелов?
Я использую приведенный ниже сценарий для перемещения на два дня назад, когда сценарий запускается в начале двух дней в году, а также для проверки первого и второго дней каждого месяца и перехода на два дня назад. if [$month="01"] && [$day="01"]; then date="$last_month/$yes_day/$last_year" fulldate="$last_month/$yes_day/$last_year" else if [$month="01"] && [$day="02"]; then date="$last_month/$yes_day/$last_year" …

1
Отладочные сценарии, в чем разница между -x и set -euxo pipefail?
Основной способ отладки скриптов, который я знаю, - добавление -xв shabang ( #!/bin/bash -x). Недавно я наткнулся на новый способ, добавив set -euxo pipefailпрямо под шабан, как в: #!/bin/bash set -euxo pipefail В чем основное различие между двумя способами отладки? Есть ли моменты, когда вы бы предпочли одно над другим? …

4
Строки префикса и суффикса к каждой строке вывода из команды
Я столкнулся с проблемой, пытаясь написать сценарий Bash. Когда grepвыводит, он возвращает (обычно) много строк. Я хотел бы префикс и суффикс строки для каждой из этих строк вывода. Я также хотел бы отметить , что я ТРУБОПРОВОДНЫЙ lsв grep, как: ls | grep

3
как удалить последний слеш пути к каталогу?
У меня есть скрипт, который требует каталог в качестве одного аргумента. Я хочу поддержать две формы: один как a/b/c (без косой черты в конце) и другой как a/b/c/ (косая черта в конце). Мой вопрос: учитывая любую из двух форм, как я могу просто оставить первую форму без изменений и удалить …

3
awk: форсировать возвращение статуса?
Это продолжение моего предыдущего вопроса . Я проверяю количество полей в / etc / passwd, используя этот удобный фрагмент. В следующем примере пользователи 'fieldcount1' и 'fieldcount2' имеют неправильное количество полей: $ awk -F: ' NF!=7 {print}' /etc/passwd fieldcount1:x:1000:100:fieldcount1:/home/fieldcount1:/bin/bash:::: fieldcount2:blah::blah:1002:100:fieldcount2:/home/fieldcount2:/bin/bash: $ echo $? 0 Как вы заметите, awk выйдет со статусом …

3
поиск сценария Bash - Return on Error, а не Exit?
Я использую скрипт bash в терминале , поэтому при выходе set -o errexit убивает мой терминал, который крайне раздражает, потому что я должен закрыть терминал, открыть другой и сбросить некоторые переменные. Пока, используя command || return линии, в сценарии, делает именно то, что я хочу set -o errexit делать ... …

5
Как я могу удалить все до шаблона и все после другого шаблона из линии?
В следующем файле: Lorem Ipsum Dolor Sit Amet, посвященный Aditiscing Elit. Ut eu metus id lectus vestibulum ultrices. Меценатский хрип Я хочу удалить все до consectetuerи все после elit. Мой желаемый результат: consectetuer adipiscing elit. Как я могу это сделать?

4
Как я могу перечислить все имена пользователей и / или домашние каталоги?
Я хочу перечислить все каталоги пользователей на машине. Обычно я буду делать: ls -l /home Но я использую его в сценарии, который будет развернут на других машинах, и, возможно, на тех машинах они не называют его домашним (например, myHome). Поэтому я хочу обобщить это ls -l ~. Но он просто …

6
Выберите интерпретатор после запуска скрипта, например, если / еще внутри hashbang
Есть ли способ динамически выбрать интерпретатор, который выполняет сценарий? У меня есть скрипт, который я запускаю на двух разных системах, и интерпретатор, который я хочу использовать, находится в разных местах на двух системах. В конечном итоге мне приходится менять строку hashbang каждый раз, когда я переключаюсь. Я хотел бы сделать …

1
Удалить тишину из аудио файлов, оставляя пробелы
В настоящее время мы используем эту команду в сценарии оболочки, чтобы удалить тишину из аудиофайлов: ffmpeg -i $INFILE -af silenceremove=0:0:0:-1:1:${NOISE_TOLERANCE}dB -ac 1 $SILENCED_FILE -y Это прекрасно работает, за исключением того, что удаляет всю тишину, в результате чего оставшееся аудио сжимается вместе. Как это можно сделать, оставляя две или три секунды …

1
Почему эти бомбы-вилки работают по-разному, и каково значение & в этом?
Я понимаю, как работает обычная вилочная бомба, но я не совсем понимаю, почему & в конце обычной бомбы вилки требуется и почему эти сценарии ведут себя по-разному: :(){ (:) | (:) }; : и :(){ : | :& }; : Первый вызывает всплеск использования процессора, а затем возвращает меня к …

5
Быстрое сжатие большого количества больших файлов
У меня ежедневно генерируется около 200 ГБ данных журнала, которые распределяются по 150 различным файлам журнала. У меня есть скрипт, который перемещает файлы во временную папку и делает tar-bz2 во временной директории. Я получаю хорошие результаты, поскольку журналы объемом 200 ГБ сжимаются примерно до 12-15 ГБ. Проблема в том, что …

5
Это ошибка в Bash? `return` не завершает функцию, если вызывается из канала
У меня были некоторые странные проблемы с Bash в последнее время. Пытаясь упростить свой сценарий, я разработал небольшой фрагмент кода: $ o(){ echo | while read -r; do return 0; done; echo $?;}; o 0 $ o(){ echo | while read -r; do return 1; done; echo $?;}; o 1 …

4
сравнить два столбца разных файлов и распечатать, если он совпадает
Я использую Solaris 10, поэтому параметры grep, включающие -f, не работают. У меня есть два файла, разделенных каналом: file1: abc|123|BNY|apple| cab|234|cyx|orange| def|kumar|pki|bird| файл 2: abc|123| kumar|pki| cab|234 Я хотел бы сравнить первые два столбца файла file2 с файлом file1 (поиск по всему содержимому файла file1 в первых двух столбцах), если …

4
Имейте ssh-add молчите, если ключ уже там
Я хочу поставить ssh-add /path/to/special_keyв верхней части сценария. Это работает нормально, но всегда запрашивает пароль. Это странно и немного раздражает, так как все еще запрашивает фразу-пароль, даже когда ssh-add -lпоказывает, что ключ уже был добавлен. Есть ли способ сказать это: «добавить этот ключ и спросить пароль, если он еще не …

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