Вопросы с тегом «bash»

Вопросы, специфичные для GNU Bourne Again SHell, в отличие от других оболочек Bourne / POSIX. Для вопросов о оболочках Unix в целом используйте вместо этого тег / shell.

4
Непрямой возврат всех элементов в массиве
Страница руководства Bash описывает использование ${!a}для возврата содержимого переменной, имя которой является содержимым a(уровень косвенности). Я хотел бы знать, как вернуть все элементы в массиве, используя это, т.е. a=(one two three) echo ${a[*]} возвращается one two three Я хотел бы для: b=a echo ${!b[*]} вернуть то же самое. К сожалению, …
10 bash  array 

1
Как присвоить значения нескольким переменным в командной строке с помощью баров
По сути, я пытаюсь выделить определенные части вывода команды оболочки для нескольких переменных, но я не знаю, как это сделать. Для простоты предположим, что команда на оболочке при выполнении печатает one two three four который может быть смоделирован с echo "one two three four" (хотя фактическая команда отличается) Теперь я …
10 shell  bash 

2
Инициализация переменных Bash - требуется, рекомендуется или определяется по мере продвижения
Есть ли преимущество / недостаток инициализации значения переменной bash в скрипте, либо перед основным кодом, либо перед локальными переменными в функции перед присвоением ей фактического значения? Мне нужно сделать что-то вроде этого: init() { name="" name=$1 } init "Mark" Есть ли риск того, что переменные будут инициализированы значениями мусора (если …
9 bash  variable 

3
Что такое идентификатор токена `]`?
Руководство Bash говорит: Когда используется [форма, последний аргумент команды должен быть]. $ type [ [ is a shell builtin $ type ] bash: type: ]: not found Так что ]это не зарезервированное слово, не оператор и не встроенная команда. В качестве токена, каков идентификатор токена ]? СЛОВО или ИМЯ?
9 bash 


4
Производительность цикла против расширения
Нужны экспертные предложения по сравнению ниже: Сегмент кода с использованием цикла: for file in `cat large_file_list` do gzip -d $file done Сегмент кода с использованием простого расширения: gzip -d `cat large_file_list` Какой из них будет быстрее? Приходится манипулировать большим набором данных.

5
Как скопировать файл транзакционно?
Я хочу скопировать файл из A в B, который может быть на разных файловых системах. Есть несколько дополнительных требований: Копия - это все или ничего, частичный или поврежденный файл B не остается на месте при сбое; Не перезаписывать существующий файл B; Не соревнуйтесь с одновременным выполнением одной и той же …
9 linux  bash  cp 

6
Добавить последнюю строку стандартного ввода ко всему стандартному вводу
Рассмотрим этот скрипт: tmpfile=$(mktemp) cat <<EOS > "$tmpfile" line 1 line 2 line 3 EOS cat <(tail -1 "$tmpfile") "$tmpfile" Это работает и выводит: line 3 line 1 line 2 line 3 Допустим, что наш источник ввода, а не фактический файл, был вместо этого stdin: cat <<EOS | # what …
9 bash 

1
Почему тильда (~) не раскрывается при использовании с аргументом CLI, начинающимся с тире?
Я потерял пару часов, пытаясь запустить сервер VNC (x0vncserver), и клиент отказался подключиться со странным сообщением, которое No password configured for VNC Auth Сервер также печатает эту ошибку SVncAuth: opening password file '~/.vnc/passwd' failed Хорошо, я потратил много времени, пока не понял, что тильда не была расширена ни оболочкой, ни …
9 bash  shell  tilde 

3
Как я могу предотвратить появление неподдерживаемых опций 'shopt' в моем .bashrc?
Я работаю в относительно гетерогенной среде, где я могу использовать разные версии Bash на разных узлах HPC, виртуальных машинах или моей личной рабочей станции. Поскольку я помещаю свои сценарии входа в Git-репозиторий, я хотел бы использовать один и тот же (ish) .bashrcпо всем направлениям, без большого количества «если этот хост, …

3
«Вариабилизация» амперсанда (фоновый процесс)
Я хочу знать, есть ли способ поместить амперсанд в переменную и по-прежнему использовать его для отправки процесса в фоновый режим. Это работает: BCKGRND=yes if [ "$BCKGRND" = "yes" ]; then sleep 5 & else sleep 5 fi Но разве не здорово было бы выполнить эти пять строк одной? Вот так: …


3
Как напечатать строки, разделенные TAB в Bash?
Я пытаюсь напечатать две строки, разделенные вкладкой. Я пытался: echo -e 'foo\tbar' printf '%s\t%s\n' foo bar Они оба печатают: foo bar Где пробел между ними на самом деле 5 пробелов (согласно выбору вывода с помощью мыши в Putty). Я также пытался использовать CTRL + V и нажимать клавишу TAB при …

6
Bash сортировать массив по длине элементов?
Учитывая массив строк, я хотел бы отсортировать массив в соответствии с длиной каждого элемента. Например... array=( "tiny string" "the longest string in the list" "middle string" "medium string" "also a medium string" "short string" ) Должен сортировать в ... "the longest string in the list" "also a medium string" "medium …

2
Построить команду динамически
Я работаю над сценарием, и мне нужно построить tarкоманду динамически. Вот два примера, чтобы проиллюстрировать, что я пытаюсь сделать: #!/bin/bash TAR_ME="/tmp" EXCLUDE=("/tmp/hello hello" "/tmp/systemd*" "/tmp/Temp*") _tar="tar "`printf -- '--exclude="%s" ' "${EXCLUDE[@]}"`" -zcf tmp.tar.gz" echo COMMAND: "${_tar}" ${_tar} "$TAR_ME" echo -e "\n\nNEXT:\n\n" EXCLUDE=("--exclude=/tmp/hello\ hello" "--exclude=/tmp/systemd*" "--exclude=/tmp/Temp*") _tar="tar "`printf -- '%s ' …

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