Описание тега jojos-bizarre-adventure
#!/Бен/ш
выходной_файл=в/dev/stdout в
в то время как команде getopts 'о:' опт; делать
случае $опт в
о) файл outfile=$OPTARG ;;
*) ошибка Echo 'в командной строке парсинга' >&2
выход 1
эсок
сделано
смена "$(( OPTIND - 1 ))"
при [ "$#" -ГТ 0 ]; делать
функции printf '%с = %з\п' "${1#--}" "$2"
шифт 2
сделано >$выходной_файл
Этот скрипт будет брать -о'
вариант, который будет установить выходной файл данная опция аргумент. Если -о
не используется, то вывод будет идти на стандартный вывод.
Не вариант вроде скрипта командной строки должно быть дано после --
. Двойное тире-это стандартный способ понять, что нет больше вариантов программы и что остальные операнды не должны быть обработаны в качестве параметров командной строки. Мы используем этот факт вот так, что команде getopts
не запутаться вариант-как строки в конце командной строки (это не варианты этого скрипта).
В то время как
петли в конце скрипт будет перебирать операндов в паре. Он будет сдирать двойное тире от первого операнда и выход измененное значение вместе со второй операнд со знаком равенства между ними. Если нет двойного тире в начале первого операнда (а и в -Альфа
), значение осталось без изменений. Вывод перенаправляется в данный выходной файл.
Пример выполнения:
$ ./script.sh -о-альфа-бета -- 2 --4 --АББА "Танцующая Королева" --ыыы --ыыы
$ кота
альфа = 2
бета = 4
АББА = "Танцующая Королева"
ХХХ = --ыыы
Более короткий вариант без разбора командной строки:
#!/Бен/ш
при [ "$#" -ГТ 0 ]; делать
функции printf '%с = %з\п' "${1#--}" "$2"
шифт 2
сделано
Это может быть использовано вместе с перенаправлением в командной строке писать результат в файл:
./script.sh -альфа-бета-2 --4 --АББА "Танцующая Королева" --ыыы --ыыы >выходной_файл