Как создать bash-файл и разрешить ему принимать аргумент от терминала?

Вспоминая ностальгические чувства, я вспомнил файлы .bat в DOS. :)

Вот в чем дело: Каждый раз, когда мне нужно сгенерировать документацию для данного веб-приложения, я должен:

sudo phpdoc -o HTML: frames: earthli -d public_html / yoursite. У dev / application / -t public_html / yoursite.dev / docs /

есть способ сделать ярлык к вышеупомянутому, так что мы можем набрать только:

sudo generateDoc.sh -a yoursite.dev

или еще лучше:

sudo generateDoc.sh -theVariableThatNeedsTobeChangedOnBashHere

Так что, если мы передадим yoursite.dev в командной строке, bash будет иметь yoursite.dev, если мы напишем yoursite2.dev тогда, bash будет иметь yoursite2.dev и так далее ...

Любая подсказка?

Большое спасибо.

4
задан 22 April 2011 в 20:53

4 ответа

Попробуйте:

#!/bin/bash
phpdoc -o HTML:frames:earthli -d public_html/"$1"/application/ \
    -t public_html/"$1"/docs/

Назовите его как sudo ./script.sh yoursite.

0
ответ дан 22 April 2011 в 20:53

Вы также можете поместить эту функцию в ваш .bashrc:

generateDocs() {
    sudo phpdoc -o HTML:frames:earthli \
                -d "public_html/$1/application/" \
                -t "public_html/$1/docs/"
}

, затем

generateDocs yoursite.dev
0
ответ дан 22 April 2011 в 20:53

Вот пример сценария, который я написал. $* означает «все аргументы переданы». Важно отметить, что они в кавычках, потому что в противном случае пробел нарушит команду. Quodlibet - приятная музыкальная библиотека / плеер, кстати.

jake@daedalus:~$ cat bin/play
#!/bin/bash
quodlibet --query "$*"
quodlibet --next
jake@daedalus:~$ play garrison keillor rhubarb pie

Как сказал Фидо, не забудьте установить файл как исполняемый с помощью chmod +x programName.

Что-то, что вы могли бы рассмотреть, это сделать каталог bin в вашей домашней папке и добавить его в свой $PATH. Затем вы можете вызывать команду независимо от того, в какой папке вы находитесь. У меня есть эта строка в моем .bashrc: PATH=$HOME/bin:$PATH. Если вы этого не сделаете, вы должны использовать абсолютный или относительный путь при вызове сценария, например:

jake@daedalus:/usr/local/share/docs$ /home/jake/bin/play foo fighters everlong
jake@daedalus:~/bin$ ./play placebo where is my mind

Я настоятельно рекомендую Руководство Гримуара по сценариям SH . Что вам нужно сделать, это использовать Позиционные параметры оболочки , чтобы получить аргументы и вставить их в вашу команду. Есть также TLDP более глубокая обработка позиционных параметров BASH . Я бы начал с Гримуара, а затем прочитал TLDP, когда вы будете готовы к более сложному изучению этого вопроса.

0
ответ дан 22 April 2011 в 20:53

Откройте ваш любимый текстовый редактор, вставьте следующее:

args=("$@")
sudo phpdoc -o HTML:frames:earthli -d public_html/${args[0]}/application/ -t public_html/${args[0]}/docs/

и сохраните его как (в данном случае) «generateDoc.sh». Следующее, что нужно сделать, это дать права на исполнение для вашего файла, поэтому откройте терминал и запустите: $ chmod +x generateDoc.sh
Теперь все, что вам нужно сделать, это вызвать файл: $ ./generateDoc.sh yoursite.dev нет необходимости в [ 113] здесь, потому что он уже находится внутри файла sh.

Надеюсь, это поможет!

0
ответ дан 22 April 2011 в 20:53

Другие вопросы по тегам:

Похожие вопросы: