2

У меня вопрос. У меня есть сценарий, своего рода длинный сценарий, написанный на bash aprox. 370 строк. Это имеет несколько функций, и в этих функциях пользователь должен вводить информацию, которая затем сохраняется в файлах. (Предполагается, что это представляет базу данных MySQL с функциями INSERT, UPDATE, SELECT, SELECT, где x = y.) Я создал это сам в bash, теперь единственное, что меня покоит, это то, что мне нужно иметь возможность передавать аргументы в командной строке скрипту, который будет делать то же самое, что и скрипт. Я знаю, что Bash имеет позиционные параметры, такие как

$1
$2
$3
$*
$@
$0 ( refers to the name of the script)

и т.д. Я знаю, как я могу использовать эти параметры в простой функции if. Этого недостаточно для моего сценария. Мне нужно сделать то же самое, что делает скрипт, но затем из командной строки. Я боролся с этим уже пару дней и не могу придумать, как заставить его работать. Может быть, кто-то здесь может помочь мне с этим?

Если вы хотите иметь сценарий. Это может быть возможно, но я не думаю, что смогу вставить это сюда ...

РЕДАКТИРОВАТЬ: ссылка на скрипт, http://pastebin.com/Hd5VsDv2

Обратите внимание, я новичок в написании сценариев bash.

РЕДАКТИРОВАТЬ: Это в ответ на ответ 1. Как я уже сказал, я надеюсь, что смогу просто заменить if [ "$1" = "one" ] ; then echo "found one" для if [ "$1" = "one" ] ; then echo SELECT где SELECT - функция, которую я ранее имел в своем скрипте (см. выше)

http://pastebin.com/VFMkBL6g ССЫЛКА на скрипт тестирования

2 ответа2

0

Сценарий является интерактивным и читает его данные с помощью нескольких операторов read .

После быстрого взгляда я считаю, что было бы проще написать новый сценарий, чем настроить текущий сценарий так, чтобы он принимал командные строки. (При свободном использовании вырезать / вставить это не должно быть так сложно).

Несколько советов, с чего можно начать.

  1. Написать простой скрипт , который читает три или четыре переменных из командной строки, сохраняет переменные в локальных переменных A B C D и echo их снова.
  2. В вашем сценарии создайте функцию, которая, if A=one echos "found one" if A=two echos "found two" if A=three echos "found two" (случай хорошо подходит для этого)
  3. Создайте еще несколько функций, которые выполняют те же действия, что и выше, но только для B , C & D
  4. Замените эхостаты в no2 вызовом недавно созданных функций
  5. Если вы заставите это работать, теперь вы можете начать заменять ваши функции-заполнители и значения реальными вещами из вашего текущего скрипта.

И, наконец, не делайте много шагов одновременно, и когда вы застряли, задайте вопрос на https://stackoverflow.com/. Обязательно укажите минимальный объем кода, который можно запустить и воспроизвести ошибку.

Удачи

0

В bash есть встроенные getopts для разбора позиционных параметров. Вы также можете использовать более старую внешнюю команду getopt . Посмотрите на Использование getopts, чтобы прочитать параметры / аргументы, переданные в скрипт

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .