Как видете, hostname -i
может показать 127.0.0.1 (нет NAT
здесь (archlinux)), это не то, что мы хотим.
Таким образом, я делаю предложение:
dev=eth0
ip=$(
ip a s dev $dev |
awk '/inet /{gsub("/.*", "");print $2}'
)
echo "$ip"
Или если Вы имеете -P
переключатель для grep
:
ip a s dev eth0 | grep -oP 'inet\s+\K[^/]+'
Я предполагаю, что это - самое короткое решение =)
id=$( getent passwd $username | cut -d: -f3 | sed 's/.*\(..\)$/\1/' )
с awk
awk -v u=$username -F: '$1 == u {exit $3%100}' /etc/passwd
Что Вы имеете в виду "некоторую другую стандартную утилиту"? Если Вы хотите, чтобы сценарий оболочки возвратил произвольные статусы выхода, можно передать любое значение встроенной оболочке exit
:
exit `awk -F: $USER '{print $2}' /etc/passwd`
(или просто exit 35
, и т.д.)
Это позволяет Вам преобразовать вывод в статус выхода, даже для программ, которые не имеют exit
операция как perl
и awk
сделать. Но имейте в виду, что конвенция Unix состоит в том, чтобы успешные программы возвратились 0
, таким образом, Вы получите некоторое странное поведение, если Вы запустите свою специальную программу от командной строки (и т.д.).
exit
.
– RedGrittyBrick
04.12.2013, 16:49
perl
среди стандартных опций, следовательно, "почему не только используют жемчуг" беспорядок.
– alexis
04.12.2013, 16:52