echo $ вместе с переменной

Вы должны добавить пользователя в группу disk с правами root:

usermod -a -G disk USER

NB : Добавление ПОЛЬЗОВАТЕЛЯ в ] disk группа эквивалентна предоставлению корневого доступа.

Как пользователь запускает:

fatsort /dev/sdh
1
17.06.2017, 00:29
3 ответа

Вы можете использовать строковые операции оболочки, чтобы получить последнюю часть каталога без вызова внешней утилиты:

dirc="/a/b/"
dirc=${dirc%/}         # remove trailing / if it is there
echo "${dirc##*/}"     # remove everything up to the last /

Которая выводит b. Обратите внимание, что это не будет работать, если dirc — это просто /, поэтому basename может быть лучше.

Или получить одно поле по номеру через массив оболочки.

IFS=/ read -a dira <<< "$dirc"   # split to an array
echo "${dira[2]}"                # echo one field, first is 0

Кстати, обратные кавычки в вашем echo | awk - это опечатка? С ними оболочка будет принимать вывод awk как команду для запуска.

2
27.01.2020, 23:14

Чтобы напечатать последнюю часть пути, используйтеbasename:

$ dirc='/a/b/'
$ basename "$dirc"
b

Чтобы получить i-е/-поле с разделителями, используя awk, установите переменную awk, например var, на значение $i, затем используйте $varв awkдля доступа к i-е поле:

$ i=3
$ echo "$dirc" | awk -v var="$i" -F '/' '{ print $var }'
b

Разница между varи $varв awkзаключается в том, что varявляется числовым значением, (в данном случае ), а $var— значением поля, соответствующего этому числовому значению..


Как заметил ilkkachu, обратные кавычки вокруг последней строки кода не имеют смысла. Это приведет к тому, что результат команды (строкаb)будет интерпретирована как команда, которая будет выполнена.

1
27.01.2020, 23:14

i в сценарии AWK это переменная AWK, а не переменная оболочки; вам нужно установить переменную AWK:

#!/bin/bash
dirc="/a/b/"
echo "${dirc}" | awk -F / -v i=3 '{print $i}'

Вы можете указать значение iлюбым способом, понятным оболочке:

i=3
echo "${dirc}" | awk -F / -v "i=${i}" '{print $i}'

Вы могли бы также заставить оболочку оценивать переменную в сценарии AWK, но это просто поиск проблем:

i=3
echo "${dirc}" | awk -F / "{print \$${i}}"
3
27.01.2020, 23:14

Теги

Похожие вопросы