Аргумент сценария Linux с буквой или цифрой - PullRequest
0 голосов
/ 21 ноября 2010

Я ищу решение для моей проблемы с аргументами скрипта

Вот эта вещь:

Я хотел бы начать свой скрипт с:

./myscript.sh -d9 file_name

вместо9, может быть любое другое число

Есть ли какая-нибудь функция для таких вещей?

Ответы [ 3 ]

2 голосов
/ 21 ноября 2010

Попробуйте использовать getopt:

$ getopt d: -d42 arg
-d 42 -- arg

Первый параметр - это список параметров (двоеточие означает, что параметр принимает аргумент)

2 голосов
/ 21 ноября 2010

Если вы используете оболочку bash, взгляните на встроенную команду getopts. Введите help getopts в командной строке bash, чтобы получить информацию об этом.

Короче говоря, он принимает список возможных опций и указывает, принимают ли они значения аргументов, и возвращает следующую опцию для обработки в паре переменных. Используйте его в цикле while, чтобы обработал все параметры , а затем вы также можете обработать имя файла:

while getopts "d:" flag
do
  if [ "$flag" = "d" ]
  then
    D=$OPTARG
  fi
done
echo $D    # argument value you are looking for

shift $(($OPTIND - 1))
echo $1    # the file name after the parsed options
0 голосов
/ 21 ноября 2010

В вашем примере $1 это "-d9", а $2 это "имя_файла".

$@ это "-d9 имя_файла", и если вы когда-нибудь наберете больше 9, начните использовать ${10}

Используйте регулярные выражения для поиска значений.

Например:

if [[ $@ =~ "d (\d+)( |$)" ]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...