Я новичок в bash-скриптинге и пытаюсь выучить один из скриптов, которые использует моя компания. Я наткнулся на эту строку:
[ ! -f $PKGDIR/$COMMON_OPS_SCRIPT ] && exit $MISSING_COMMONOPS_SCRIPT
следующая строка:
. $PKGDIR/$COMMON_OPS_SCRIPT
Первая строка сбивает меня с толку, потому что похоже, что она должна быть частью оператора if, но это не ' т. Вторая строка - это то же самое, что в скобках на первой строке, перед которой стоит точка. Может кто-нибудь объяснить, пожалуйста, что здесь происходит?
Кроме того, я пытался изучить скрипты bash здесь:
https://ryanstutorials.net/bash -scripting-tutorial /
У кого-нибудь есть лучший учебник, который я мог бы проверить?
Вам не нужен if
из-за &&
, который можно использовать эквивалентно.
[ ] : conditional test
! not
-f FILE : does FILE exist ?
&& : do the following only if the statement before is true (returns 0)
exit : exit the script
. FILE : include FILE
Таким образом, скрипт проверяет, не существует ли файл, и выходит из скрипта, когда это так. В противном случае он будет источником / включать этот файл.
Эти 3 эквивалентны:
if [ something ]; then something_else; fi
[ something] && something_else
test something && something_else
проверяет, существует ли файл в $PKGDIR/$COMMON_OPS_SCRIPT
, затем отправьте его . $PKGDIR/$COMMON_OPS_SCRIPT
на следующую строку, в противном случае выйдите и вернитесь $MISSING_COMMONOPS_SCRIPT