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

Для вопросов о скриптах, написанных для командной оболочки Bash. Для сценариев оболочки с ошибками / синтаксическими ошибками, пожалуйста, проверьте их с помощью программы shellcheck (или на сервере веб-проверки оболочки по адресу https://shellcheck.net) перед размещением здесь. Вопросы об интерактивном использовании Bash, скорее всего, будут касаться темы Super User, а не переполнения стека.

4957
Как получить исходный каталог скрипта Bash из самого скрипта

Как мне получить путь к каталогу, в котором находится скрипт Bash , внутри этого скрипта? Я хочу использовать скрипт Bash в качестве средства запуска для другого приложения. Я хочу изменить рабочий каталог на тот, где находится скрипт Bash, чтобы я мог работать с файлами в этом каталоге, например...

3268
Как мне узнать, что обычный файл не существует в Bash?

Я использовал следующий скрипт, чтобы увидеть, существует ли файл: #!/bin/bash FILE=$1 if [ -f $FILE ]; then echo "File $FILE exists." else echo "File $FILE does not exist." fi Какой правильный синтаксис использовать, если я только хочу проверить, не существует ли файл ? #!/bin/bash FILE=$1 if [...

2576
Как проверить, содержит ли строка подстроку в Bash

У меня есть строка в Bash: string="My string" Как я могу проверить, содержит ли она другую строку? if [ $string ?? 'foo' ]; then echo "It's there!" fi Где ??мой неизвестный оператор. Я использую эхо и grep? if echo "$string" | grep 'foo'; then echo "It's there!" fi Это выглядит немного...

2285
Что означает «2> & 1» в оболочке?

В оболочке Unix, если я хочу объединить stderrи stdoutв stdoutпоток для дальнейших манипуляций, я могу добавить следующее в конце моей команды: 2>&1 Итак, если я хочу использовать headна выходе из g++, я могу сделать что-то вроде этого: g++ lots_of_errors 2>&1 | head поэтому я вижу...

2114
Извлечь имя файла и расширение в Bash

Я хочу получить имя файла (без расширения) и расширение отдельно. Лучшее решение, которое я нашел, это: NAME=`echo "$FILE" | cut -d'.' -f1` EXTENSION=`echo "$FILE" | cut -d'.' -f2` Это неправильно, потому что не работает, если имя файла содержит несколько .символов. Если, скажем, у меня есть...

2044
Как разделить строку на разделитель в Bash?

У меня есть эта строка хранится в переменной: IN="bla@some.com;john@home.com" Теперь я хотел бы разделить строки по ;разделителю, чтобы у меня было: ADDR1="bla@some.com" ADDR2="john@home.com" Я не обязательно нужен ADDR1и ADDR2переменные. Если они являются элементами массива, это даже лучше. После...

1922
Как мне разобрать аргументы командной строки в Bash?

Скажем, у меня есть скрипт, который вызывается с этой строкой: ./myscript -vfd ./foo/bar/someFile -o /fizz/someOtherFile или этот: ./myscript -v -f -d -o /fizz/someOtherFile ./foo/bar/someFile Что общепринятый способ разбора это таким образом, что в каждом конкретном случае (или некоторая...

1680
Как установить переменную для вывода команды в Bash?

У меня есть довольно простой скрипт, который выглядит примерно так: #!/bin/bash VAR1="$1" MOREF='sudo run command against $VAR1 | grep name | cut -c7-' echo $MOREF Когда я запускаю этот скрипт из командной строки и передаю ему аргументы, я не получаю никакого вывода. Однако, когда я запускаю...

1625
Как посчитать все строки кода в каталоге рекурсивно?

У нас есть приложение PHP, и мы хотим подсчитать все строки кода в определенном каталоге и его подкаталогах. Нам не нужно игнорировать комментарии, так как мы просто пытаемся получить грубое представление. wc -l *.php Эта команда прекрасно работает в данном каталоге, но игнорирует подкаталоги. Я...

1545
Как перебрать диапазон чисел, определенных переменными в Bash?

Как перебрать диапазон чисел в Bash, если диапазон задан переменной? Я знаю, что могу сделать это (это называется «выражение последовательности» в документации Bash ): for i in {1..5}; do echo $i; done Который дает: 1 2 3 4 5 Тем не менее, как я могу заменить одну из конечных точек диапазона...

1536
Как перенаправить и добавить как stdout, так и stderr в файл с помощью Bash?

Чтобы перенаправить стандартный вывод в усеченный файл в Bash, я знаю использовать: cmd > file.txt Чтобы перенаправить стандартный вывод в Bash, добавив в файл, я знаю использовать: cmd >> file.txt Чтобы перенаправить как stdout, так и stderr в усеченный файл, я знаю использовать: cmd...