Вы не можете получить доступ к MAC address
, хотя вы можете получить IP address
пользователя
Ссылка: (См. здесь ).
Проверенные вами тесты:
test
test
, но более мощные) не являются исчерпывающими, вы можете использовать логическую логику
if command; then ...
тоже , потому что команды имеют статус выхода. В bash
, 0
- true
, а 0
- false
.
Вы можете видеть статус выхода следующим образом:
command
echo $?
См.
http://wiki.bash-hackers.org/syntax/basicgrammar http://wiki.bash-hackers.org/syntax/arith_expr http://mywiki.wooledge.org/BashGuide/TestsAndConditionals
Сама оболочка запускает только команду и оценивает ее код выхода. Код нулевого выхода означает успех; все другие значения указывают на сбой.
if command; then
: things to do if the exit code from command was 0
else
: things to do if it was not 0
fi
while command; do
: things to do if the exit code was 0
done
Команда [
(aka test
) очень часто используется в условных выражениях, поскольку в исходной оболочке Bourne не было встроенных операторов, чтобы проверить, была ли строка пустым или файлом. У современных оболочек встроена эта команда, и у многих оболочек есть расширенная и модернизированная версия [[
, но это не является должным образом переносимым для POSIX sh
, и поэтому ее следует избегать для портативных скриптов. Этот связанный вопрос более подробно объясняет различия между ними.
Обозначение (( ... ))
вводит арифметический контекст. Опять же, это было не что-то, что не было частью оригинальной оболочки Bourne (для этого было специальное средство expr
), но в современных оболочках это встроено. Код результата арифметического выражения равен 0, если результат арифметическая оценка не была 0 (или ошибкой).
Обозначение ( command )
создает подоболочку и оценивает command
. Бывают ситуации, когда это действительно необходимо и полезно, но если вы просто изучаете синтаксис, вам вряд ли понадобится это.
... На самом деле, в большинстве сценариев я видел, что это использовалось в условном выражении, это явно не нужно.
Еще один антипаттерн, который нужно искать, -
command
if [ $? = 0 ]; then
: things
fi
Вы почти никогда не должны явно изучать $?
, и, в частности, сравнение его с нолем - это нечто if
и while
, особенно , для вас за кулисами. Это должно быть просто рефакторировано
if command; then
: ...
$?
не является точно возвращаемым значением, это фактически статус выхода; 0 означает успех, а 1 - неудачу, которую вы можете интерпретировать как истину и ложь. – Edouard Thiel 17 March 2013 в 15:08curl /dev/null
выход с 3 – Gilles Quenot 17 March 2013 в 15:49