Чӣ тавр бояд нависед Bash. WHILE-Loops

Фармонҳо, матн ва намунаҳо

Шумо метавонед як пайдарпаии фармонҳоро ба воситаи онҳоро ба файли скрипт менависед ва онро иҷро кунед.

Файли скрипт танҳо як файли матн, одатан бо паҳнкунии файлҳои СХР, ки пайдарпаии дастурҳо, ки метавонанд аз хатти фармон ( қоғаз ) иҷро карда шаванд.

Ҳангоми намунаҳо

Дар зер намунаи як давра аст. Ҳангоми иҷрошуда, файли мазкур ба рақамҳои 1 то 9 дар экран чоп карда мешавад. Дар ҳоле, ки баёния шумо барои муайян кардани ҳолати қатъкунӣ аз давра ба давра бештар қаноатмандӣ мебахшад.

#! / bin / bash count = 1 ҳангоми [$ count-9] echo "$ count" хоби 1 ((шумори ++)) анҷом дода мешавад

Масалан, шумо метавонед скриптити пештара бо пахши дубора гузоред, ки дар инҷо калимаи increment "((шумора ++))":

#! / bin / bash count = 1 ҳангоми [$ count-9] энергияи "$ count" sleeping 1 done

Тафсилоти "хоби 1" иҷрои 1 сонияро дар ҳар як таклифот қатъ мекунад. Барои қатъ кардани раванди кӯтоҳаки клавиатураи Ctrl + C истифода баред.

Шумо инчунин метавонед як сатри бефосиларо бо тасвири як колония офаред:

#! / bin / bash count = 1 дар ҳоле: echo "$ count" хоби 1 ((шумори ++)) анҷом дода мешавад

Барои истифода бурдани шароитҳои чандинтихоботӣ, шумо бояд нишондиҳандаи квадратаи квадратиро истифода баред:

$ 1 = 0 ҳангоми [[$ count-9] && [$ done == 0] echo "$ count" хоби 1 ((шумори ++)) [$ count == 5]; пас он $ анҷом дода шудааст

Дар ин скрипт, ин тағйирёбанда "анҷом дода шудааст" ба 0 ва баъд ба 1 адад расид, ки шумораи он ба 5 расидааст. Ҳолати давравӣ қайд мекунад, ки давомнокии давра давом дорад, агар "count" камтар аз нӯҳ ва "анҷом" бошад, баробар аст ба сифр. Бинобар ин, ҳосарҳо пас аз он ки баробар ба 5 баробар аст.

"&&" маънои "мантиқӣ" ва "ва" || " маънои «мантиқи» ё «» -ро дорад.

Нишондиҳии алтернативӣ барои конвертҳо ва "ва" ё "дар шароити" -а "ва" -o "бо қуттиҳои ягона. Дар ҳолати боло:

[[$ count-9] && [$ done == 0]]

... метавонад ислоҳ карда шавад:

[$ count-9] -a [$ done == 0]

Хондани файли матн одатан бо як давра анҷом дода мешавад. Дар намунаи зерин, скрипкаи чопӣ сатри мундариҷаро бо хатти файли "inventory.txt:" нависед.

FILE = инвентаризатор.txt exec 6

Хати аввал номи файли воридшударо ба "FILE" номидааст. Хати дуюм вуруди "стандарти стандартӣ" -ро дар тарҳрезии файл "6" нигоҳ медорад (он метавонад ягон арзиши байни 3 ва 9 бошад). Барои ин, "вурудоти стандартӣ" ба файли "0" дар охири скрипт баргардонида мешавад (нигаред ба "exec") Дар сатри 3, файли воҳима ба файли тасвир "0," таъин шудааст барои ворид намудани стандартҳои муқаррарӣ. Пас аз он, "хондани" калимае, ки аз ҳар як ҷудогона бармеояд ва онро ба варианти "line1" мефиристад.

Барои пеш аз мӯҳлат баромадан аз баромадан, шумо метавонед баёнияи шикастаро истифода баред:

1 = (шумора ва ++)) [$ count == 5] баъд аз хатои echo

Изҳороти хилофи иҷроиши барнома дар охири вақти бармегардида ва ҳар гуна изҳоротро пас аз он иҷро мекунад. Дар ин ҳолат, изҳорот "echo finished."

Дар баёнияи давравӣ, аз тарафи дигар, танҳо боқимондаи ақди никоҳ дар бораи такрори ҷорӣ ҷорӣ карда шуда, бевосита ба такрори минбаъда мегузорад:

1 = (санаи ++)), агар пас аз [$ count == 5] пас идома дихед $ "count echo finished echo

Дар ин ҳолат, ҳисобкунии "давом" иҷро мешавад, вақте ҳаҷми "count" ба 5 мерасад. Ин маънои онро дорад, ки минбаъд эъломияи минбаъда ("$ count") дар ин такрия иҷро карда намешавад (ҳаҷми "count" 5).