Firefox теперь разблокировал Flash, но только если вы установите последний плагин: http://www.stream-entry.ca/2015/07/updating-flash-plugin-for-firefox-on.html
Поскольку расширение переменной не было заключено в кавычки, пустое слово, возникающее в результате расширения $varsome
, полностью удаляется.
Давайте создадим функцию, которая выводит количество аргументов, которые она получает, и сравним случай -в кавычках и без кавычек:
$ args() { echo "got $# arguments"; }
$ var=""
$ args $var
got 0 arguments
$ args "$var"
got 1 arguments
То же самое происходит в вашем случае сid
:id -u $var
точно так же, как просто id -u
, когда var
пусто. Так как id
не видит имени пользователя, по умолчанию печатает информацию о текущем пользователе.
Если цитировать "$var"
, то результат будет другим:
$ var=""
$ id -u "$var"
id: ‘’: no such user
С этим исправлением вы можете использовать id
, чтобы узнать, существует ли пользователь. (Нам не нужны здесь выходные данные, так что перенаправьте их подальше.)
check_user() {
if id -u "$1" >/dev/null 2>&1; then
echo "user '$1' exists"
else
echo "user '$1' does not exist"
fi
}
check_user root
check_user asdfghjkl
Это напечатает user 'root' exists
и user 'asdfghjkl' does not exist
.
Это немного противоположно обычным проблемам, возникающим из-за неожиданного разбиения на слова переменных, не заключенных в кавычки. Но основная проблема та же самая и исправлена тем, что половина ответов здесь говорит :всегда цитирует расширения переменных (, если вы не знаете, что хотите поведение без кавычек ).
См.:
Команда id -u
даст вам идентификатор текущего пользователя. Команда id -u user
даст вам идентификатор этого пользователя.
Теперь в вашем примере вы используете
var=`whoami`
id -u $var
Команда whoami
возвращает текущего пользователя. Таким образом, id -u current_user
вернет идентификатор текущего пользователя, а id -u
также вернет идентификатор текущего пользователя.
Редактировать
Обратите внимание, что обратные кавычки устарели, вместо них рекомендуется писать $(whoami)
, например:
var=$(whoami)
id -u $var