Како пренети аргументе на Басх-Сцрипт

Команде, синтаксу и примере

Можете писати басх скрипту тако да прима аргументе специфициране када се скрипт позива из командне линије. Овај метод се користи када скрипта мора да изврши нешто другачију функцију у зависности од вредности улазних параметара (аргумената).

На пример, можда имате сценарио под називом "статс.сх" који обавља одређену операцију у датотеци, као што је бројање његових речи. Ако желите да користите тај скрипт на многим датотекама, најбоље је проследити име датотеке као аргумент, тако да можете користити исту скрипту за све датотеке које се обрађују. На пример, ако је име датотеке које треба обрадити је листа песама, уносите следећу командну линију:

сх статс.сх сонглист

Аргументи се приступају унутар скрипте користећи варијабле $ 1, $ 2, $ 3 итд., Гдје се $ 1 односи на први аргумент, $ 2 у други аргумент, и тако даље. То је илустровано у следећем примеру:

ФИЛЕ1 = $ 1 вц $ ФИЛЕ1

За читљивост додијелите варијаблу са описним именом вриједношћу првог аргумента ($ 1), а затим позовите корисничко име за број ријечи ( вц ) на овој варијабли ($ ФИЛЕ1).

Ако имате променљив број аргумената, можете користити променљиву "$ @", која представља низ свих улазних параметара. То значи да можете да користите фор-петље за поновну обраду сваког од њих, као што је илустровано у следећем примеру:

за ФИЛЕ1 у "$ @" учинити вц $ ФИЛЕ1 учињено

Ево примера како то називати скриптом са аргументима из командне линије:

сх статс.сх сонглист1 сонглист2 сонглист3

Ако аргумент има просторе, морате га приложити појединачним цитатима. На пример:

сх статс.сх 'сонглист 1' 'сонглист 2' 'сонглист 3'

Често се сценарио пише тако да корисник може пренети аргументе у било ком редоследу користећи заставе. Са методом заставе, такође можете направити неке од аргумената опционо.

Рецимо да имате скрипту која преузима информације из базе података на основу одређених параметара, као што су "корисничко име", "датум" и "производ" и генерише извештај у одређеном "формату". Сада желите да напишете своју скрипту тако да можете пренети ове параметре када се скрипт позове. Можда изгледа овако:

макерепорт -у јсмитх -п нотебоокс -д 10-20-2011 -ф пдф

Басх омогућава ову функцију функцијом "гетоптс". За горе наведени пример можете користити гетоптс на следећи начин:

Ово је тада циклус који користи функцију "гетоптс" и такозвани "оптстринг", у овом случају "у: д: п: ф:", да поновите аргументе. Ток круга шета кроз оптстринг, који садржи заставице које се могу користити за прослеђивање аргумената, и додјељује вриједност аргумента предвиђену за ту заставу до варијабле "опција". Изјава случаја додељује вредност варијабле "опција" глобалној варијабли која се може користити након читања свих аргумената.

Колоне у опстрингу значе да су потребне вредности за одговарајуће заставе. У горњим примјерима за све заставице прати се двотачка: "у: д: п: ф:". То значи, за све заставе потребна је вриједност. Ако се, на примјер, не очекује да ће вриједност "д" и "ф" имати вриједност, оптстринг ће бити "у: дп: ф".

Декле на почетку опстринга, на примјер ": у: д: п: ф:", има потпуно другачије значење. Омогућава вам да рукујете заставама које нису представљене у опстрингу. У том случају је вредност променљиве "опција" подешена на "?" а вредност "ОПТАРГ" је постављена на неочекивану заставу. Омогућава вам да прикажете одговарајућу поруку о грешци која информише корисника о грешци.

Аргументима којима претходи застава игноришу гетоптс. Ако су позиви наведени у опстрингу нису обезбеђени приликом позивања скрипте, ништа се неће десити, осим ако не специјално обрадите овај случај у вашем коду. Сваки аргумент са којим не функционишу гепарди се и даље може ухватити са редовним променљивама од $ 1, $ 2, итд.