LINUX.ORG.RU

Траблы со скриптом с позиционными параметрами.


0

0

Люди! Я тут скриптик хочу написать, но часть скрипта постоянно не хочет выполняться. В чём дело? Текст скриптика: [code=bash]#!/bin/bash if $1 "-l" then cat license else if $1 "-v" then echo «Version 0.1» else if $1 "-h" then echo «usage: example.sh path_to_file» echo "-h displays this message and exit" echo "-v displays version and exit" echo "-v displays license and exit" else path=$1 fi fi fi[/code] А вот. что выводит: alex@sharik:~$ ./example.sh --help ./example.sh: line 2: --help: команда не найдена ./example.sh: line 6: --help: команда не найдена ./example.sh: line 10: --help: команда не найдена О том, что скрипт бессмысленный не писать- сам знаю. Это просто часть другого скрипта. Есть у меня привычка скрипты по кусочкам разрабатывать. Спасибо за помощь, тем, кто поможет.))))

★★★

Во-первых, форматирование. Во-вторых, ты пихаешь --help, а где оно в скрипте? Ну и вообще, познакомиться надо бы с getopt.

GotF ★★★★★
()

Ну и что за безобразное else ... if, если тут можно elif ?

GotF ★★★★★
()
Ответ на: комментарий от GotF

Ну, сорь за форматирование. Вставлял када- вроде норм было.))) А --help здесь вроде как строковое значение. Объясни, плз поподробнее. А про getopts ща поищу, спасиб.Просто я тока осваиваю шелл.)))

Dorif ★★★
() автор топика
Ответ на: комментарий от Dorif

Проверку выполняют как-то так:

if [[ "$1" ==  "blabla" ]]; then
    blablabla;

Насчёт «строковое» — в bash переменные не имеют типов.

GotF ★★★★★
()
Ответ на: комментарий от Dorif

И почитай-ка «Advanced Bash Scripting Guide». Можно даже не читать весь подряд, а подсматривать ответы на вопросы, по мере их возникновения. Примеров там тоже полно.

GotF ★★★★★
()
Ответ на: комментарий от GotF

Только двойные [ лишними оказались. Ну ничё- лучше перестараться. чем недостараться.))))

Dorif ★★★
() автор топика
Ответ на: комментарий от name_no

Ну, ничего сложного в качестве параметров test'у не передаётся, так что разницы в производительности никто и не заметит.)))) Зато код компактнее и легче просматриеваецца..)))

Dorif ★★★
() автор топика
Ответ на: комментарий от name_no

Да и coreutils есть в любом дистре, так что работать по- любому будет.

Dorif ★★★
() автор топика
Ответ на: комментарий от Dorif

Если уж написал /bin/bash в ша-банге, то логично придерживаться башевской нотации. Хотя, ничего страшного в использовании test не вижу.

GotF ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.