Пример 9-5. Я -- root?

Пример 9-5. Я -- root?

#!/bin/bash

# am-i-root.sh: Root я, или не root?

ROOT_UID=0 # $UID root-а всегда равен 0.

if [ "$UID" -eq "$ROOT_UID" ] # Настоящий "root"?

then

echo "- root!"

else

echo "простой пользователь (но мамочка вас тоже любит)!"

fi

exit 0

# ============================================================= #

# Код, приведенный ниже, никогда не отработает,

#+ поскольку работа сценария уже завершилась выше

# Еще один способ отличить root-а от не root-а:

ROOTUSER_NAME=root

username=`id -nu` # Или... username=`whoami`

if [ "$username" = "$ROOTUSER_NAME" ]

then

echo "Рутти-тутти. - root!"

else

echo "Вы - лишь обычный юзер."

fi

См. также Пример 2-2.

Переменные $ENV, $LOGNAME, $MAIL, $TERM, $USER и $USERNAME, не являются встроенными переменными Bash. Тем не менее, они часто инициализируются как переменные окружения в одном из стартовых файлов Bash. Переменная $SHELL, командная оболочка пользователя, может задаваться в /etc/passwd или в сценарии "init" и она тоже не является встроенной переменной Bash.

tcsh% echo $LOGNAME

bozo

tcsh% echo $SHELL

/bin/tcsh

tcsh% echo $TERM

rxvt

bash$ echo $LOGNAME

bozo

bash$ echo $SHELL

/bin/tcsh

bash$ echo $TERM

rxvt

Позиционные параметры (аргументы)

$0, $1, $2 и т.д.

аргументы передаются... из командной строки в сценарий, функциям или команде set (см. Пример 4-5 и Пример 11-13)

$#

количество аргументов командной строки[ 20 ], или позиционных параметров (см. Пример 33-2)

$*

Все аргументы в виде одной строки (слова)

$@

То же самое, что и $*, но при этом каждый параметр представлен как отдельная строка (слово), т.е. параметры не подвергаются какой либо интерпретации.