Читать книгу 📗 "Основы программирования в Linux - Мэтью Нейл"
break; fidoneecho first directory starting fred was $filem -rf fred*exit 0Команда "двоеточие" — фиктивная команда. Она иногда полезна для упрощения логики в условиях, будучи псевдонимом команды
true:trueВы можете найти эту команду в условии для циклов
whilewhile :while trueКонструкция
:: ${var:=value}Без
:$varВ некоторых более старых версиях сценариев командной оболочки можно встретить двоеточие, применяемое в начале строки для обозначения комментариев, однако в современных сценариях следует всегда применять для обозначения начала комментариев знак
##!/bin/shrm -f fredif [ -f fred ]; then :else echo file fred did not existfiexit 0Как и одноименный оператор языка С, эта команда заставляет охватывающий ее цикл
forwhileuntil#!/bin/shrm -rf fred*echo > fred1echo > fred2mkdir fred3echo > fred4for file in fred*do if [ -d "$file" ]; then echo "skipping directory $file" continue fi echo file is $filedonerm -rf fred*exit 0Команда
continueТаким образом, вы сможете иногда выскочить из вложенных циклов. Данный параметр редко применяется, т.к. он часто сильно затрудняет понимание сценариев. Например,
for x in 1 2 3do echo before $x continue 1 echo after $xdoneУ приведенного фрагмента будет следующий вывод:
before 1before 2before 3Команда "точка" (
.. ./shell_scriptОбычно, когда сценарий выполняет внешнюю команду или сценарий, создается новое окружение (подоболочка), команда выполняется в новом окружении и затем окружение удаляется, за исключением кода завершения, который возвращается в родительскую оболочку. Внешняя команда source и команда "точка" (еще два синонима) выполняют команды, приведенные в сценарии, в той же командной оболочке, которая выполняет сценарий.
Поскольку по умолчанию во время работы сценария создается новое окружение, любые изменения переменных окружения, сделанные в сценарии, теряются. С другой стороны, команда "точка" позволяет выполняющемуся сценарию изменять текущее окружение. Это часто бывает полезно, когда сценарий применяется как оболочка для настройки окружения, предназначенного для последующего выполнения какой-либо другой команды. Например, когда вы работаете над несколькими разными проектами одновременно, может оказаться, что вам необходимо выполнять команды с разными параметрами, например, запускать более старую версию компилятора для поддержки старой программы.
В сценариях командной оболочки команда "точка" играет роль, немного похожую на роль директивы #include в языках программирования С и С++. И хотя она не подключает сценарий в буквальном смысле слова, она действительно выполняет команду в текущем контексте, поэтому вы можете применять ее для включения переменных и определений функций в ваш сценарий.
Выполните упражнение 2.13.
В следующем примере команда "точка" применяется в командной строке, но с таким же успехом вы можете использовать ее и в сценарии.
1. Предположим, что у вас есть два файла, содержащие параметры окружения для двух разных сред разработки. Для установки окружения, предназначенного для старых классических команд, classic_set, можно применить следующий программный код.
#!/bin/shversion=classicPATH=/usr/local/old_bin:/usr/bin:/bin:.PS1="classic> "2. Для новых команд применяется latest_set.
#!/bin/shversion=latestPATH=/usr/local/new_bin:/usr/bin:/bin:.PS1=" latest version> "Вы можете установить окружение, применяя эти сценарии в сочетании с командой "точка", как показано в следующей порции примера.
$ <b>. ./classic_set</b>