Пользовательский запрос / ввод сценария оболочки - PullRequest
7 голосов
/ 13 января 2009

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

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

Например, я хочу заменить «1/12/09» на переменную, взятую из приглашения пользователя.

#!/bin/ksh
./clear_old
./rooms_xls.pl 1/12/09
cd doors
./doors_xls.pl 1/12/09

Ответы [ 3 ]

18 голосов
/ 13 января 2009

Если вы хотите получить приглашение (вместо передачи даты в качестве параметра), используйте следующую логику (или что-то подобное):

date=
while [ -z $date ]
do
    echo -n 'Date? '
    read date
done

Этот цикл будет продолжать запрашивать дату, пока пользователь не введет что-либо (что-либо), кроме простого ВОЗВРАТА.

Если вы хотите добавить простую проверку, и вы используете версию KSH это KSH93 или лучше, сделайте что-то вроде этого:

date=
while [ -z $date ]
do
    echo -n 'Date? '
    read date
    if [[ $date =~ ^[0-9]{1,2}/[0-9]{1,2}/[0-9]{1,4}$ ]]
    then
        break
    fi
    date=
done

Подробнее см. справочную страницу ksh93 .

3 голосов
/ 13 января 2009

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

$0, $1, ... $N

Таким образом, вы можете заменить жестко закодированную дату, например:

./room_xls.pl $1

И запустить его как

./myscript 1/12/09
2 голосов
/ 13 января 2009

$ 1 - первый аргумент командной строки. Это идет до 9 долларов. Проверьте этот учебник для более базового синтаксиса ksh.

...