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

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

4
dirname и basename против расширения параметров
Есть ли объективная причина предпочесть одну форму другой? Производительность, надежность, портативность? filename=/some/long/path/to/a_file parentdir_v1="${filename%/*}" parentdir_v2="$(dirname "$filename")" basename_v1="${filename##*/}" basename_v2="$(basename "$filename")" echo "$parentdir_v1" echo "$parentdir_v2" echo "$basename_v1" echo "$basename_v2" Производит: /some/long/path/to /some/long/path/to a_file a_file (v1 использует расширение параметров оболочки, v2 использует внешние двоичные файлы.)


3
Что означает $ {1: 0: 2} в этом контексте?
Я смотрю на код, показанный ниже, и он проверяет ввод, если аргументы строки / столбца начинаются с или -rили -c. Что ${1:0:2}значит в этом контексте? rowArgName="-r" colArgName="-c" if [ "${1:0:2}" != $rowArgName ] && [ "${1:0:2}" != $colArgName ] then echo $correctCmdMsg >&2 exit 1 fi


2
Как ls без рекурсии
Я пытаюсь ls некоторые файлы с шаблоном в каталоге. Я только хочу сканировать первый уровень не рекурсивный. Мой сценарий: for i in $(ls $INCOMINGDIR/*$BUSSINESSDATE*) do echo $i; done Выше команды сканирование рекурсивно. Как можно сделать это только для сканирования каталога первого уровня?
19 bash  shell-script  ls 

9
Проверьте, установлены ли несколько переменных
Я хотел бы убедиться, что в определенной точке скрипта, после sourceсоздания файла конфигурации, установлены несколько переменных и, если это не так, чтобы остановить выполнение, сообщая пользователю об отсутствующей переменной. я пытался for var in $one $two $three ; do ... но если, например $two, не установлено, цикл никогда не выполняется …

8
Избежание ожидания в bash без команды sleep
Я знаю, что могу подождать, пока условие станет истинным в bash, выполнив: while true; do test_condition && break sleep 1 done Но он создает 1 подпроцесс на каждую итерацию (сон). Я мог бы избежать их, сделав: while true; do test_condition && break done Но он использует много процессора (занят ожидания). …


2
Как мне проверить, существует ли приложение в $ PATH?
Я пытаюсь написать все свои shсценарии запуска / env для работы с таким большим количеством СУХОГО и столько: «работает на каждом * nix, к которому я клонирую», насколько это возможно. Это означает, что, если я попытаюсь запустить код, которого нет, код завершится неудачно. Для этого мне нужно иметь возможность проверить, …

6
Запуск команды для многих файлов
У меня есть папка с множеством файлов (xyz1, xyz2, вплоть до xyz5025), и мне нужно запустить скрипт для каждого из них, получив xyz1.faa, xyz2.faa и т. Д. В качестве выходных данных. Команда для одного файла: ./transeq xyz1 xyz1.faa -table 11 Есть ли способ сделать это автоматически? Может быть, комбо?

4
Является ли это нормальным подходом для «резервного копирования» переменной $ IFS?
Я всегда очень не решаюсь возиться с этим, $IFSпотому что это заглушает глобальное. Но часто это делает загрузку строк в массив bash приятной и лаконичной, а для сценариев bash трудно получить краткость. Поэтому я полагаю, что может быть лучше, чем ничего, если я попытаюсь «сохранить» начальное содержимое $IFSв другой переменной, …

8
Вызов нескольких сценариев bash и запуск их параллельно, а не последовательно
Предположим , что у меня есть три (или более) Баш сценариев: script1.sh, script2.shи script3.sh. Я хотел бы вызвать все три сценария и запустить их параллельно . Один из способов сделать это - просто выполнить следующие команды: nohup bash script1.sh & nohup bash script2.sh & nohup bash script3.sh & (Как правило, …

6
Как я могу печатать только определенные команды из скрипта bash во время их выполнения?
У меня есть скрипт bash с различными операторами if, основанными на аргументах командной строки, которые я передаю при его вызове. Наличие некоторого вывода о том, какие команды выполняются, полезно для подтверждения прохождения всех этих операторов if, но мое текущее решение дает мне слишком много информации. Использование set -vв сценарии было …


2
Подавить вывод, если не нулевой код выхода
Каков наилучший способ подавления вывода (stdout и stderr), если программа не завершает работу с ненулевым кодом? Я думаю: quiet_success() { file=$(mktemp) if ! "$@" > "$file" 2>&1; then cat "$file" fi rm -f "$file" } И беги, quiet_success my_long_noisy_script.shно я не уверен, что есть лучший способ. Я чувствую, что это …

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