b

bash

LittleGreenCat
Last active 2 months ago bash

чтение из стандартного ввода с помощью пайпа

0 0 1

А вы знали что помимо tee, который читает из стандартного ввода и пишет в стандартный вывод и файлы, такой же трюк можно сделать и с пайпами ?

Утилитка pee (входит в состав пакета moreutils) - так же как tee, но для пайпов !

cat file | pee sort 'wc -l'

Подсказал: - Сергей

Опубликовано в https://t.me/gitgate

LittleGreenCat
Last active 2 months ago bash

Условные выражения для строковых переменных в bash

0 0 1
1 # True if the shell variable varname is set (has been assigned a value).
2 [[ -v ${varname} ]]
3
4 # True if the length of the string is zero.
5 [[ -z ${string} ]]
6
7 # True if the length of the string is non-zero.
8 [[ -n ${string} ]]
9
10 # True if the strings are equal. = should be used with the test command for POSIX conformance. When used with the [[ command, this performs pattern matching as described above (Compound Commands)
LittleGreenCat
Last active 2 months ago bash

Как указать в bash значение переменной по умолчанию

0 0 1

Частенько требуется в bash скрипте указать значение переменной по умолчанию, например если не задано прямо.. Однако не все так просто... Краткий списочек с описанием логики.

# bash one liner                                
# --------------                                 

x="foo" && echo "${x:-bar} (x = $x)"            
# foo (x = foo)
LittleGreenCat
Last active 2 months ago bash

Как в bash удалить повторы из массива

0 0 1
1 <uniques>=($(echo "${<array>[@]}" | tr ' ' '\\n' | sort -u | tr '\\n' ' '))
2
3 # Пример:
4 --> ARRAY=("one" "one" "two" "two" "two" "one" "three")
5 --> UNIQUES=($(echo "${ARRAY[@]}" | tr ' ' '\\n' | sort -u | tr '\\n' ' '))
6 --> echo $UNIQUES
7 one three two
8
9 # улучшенный вариант от Ивана Гришина - https://t.me/JohnMcGru - и правильнее, и короче
10 UNIQUES=( $(printf "%s\n" "${ARRAY[@]}" | sort -u ) )