Пользовательский запрос / ввод сценария оболочки

StackOverflow https://stackoverflow.com/questions/439390

Вопрос

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

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

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

#!/bin/ksh
./clear_old
./rooms_xls.pl 1/12/09
cd doors
./doors_xls.pl 1/12/09
Это было полезно?

Решение

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

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 для получения дополнительной информации.

Другие советы

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

./room_xls.pl $1
, $1, ... $N

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

./myscript 1/12/09

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

<*>

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top