0
Я пытаюсь написать простой скрипт, чтобы что-то сделать в зависимости от входных аргументов. Вот что я написалПочему третий аргумент не разбирается в getopts bash
#!/bin/bash
usage() { echo "Usage: $0 [-l <string>] [-p <string>] [-d <string> ]" 1>&2; exit 1; }
while getopts ":l:p:d" o; do
case "${o}" in
l)
l=${OPTARG}
echo "$l"
;;
p)
p=${OPTARG}
echo "$p"
;;
d)
d=${OPTARG}
echo "$d"
;;
*)
usage
;;
esac
done
shift $((OPTIND-1))
if [ -z "${l}" ] && [ -z "${p}" ] && [ -z "${d}" ]; then
usage
fi
Сво возможность проанализировать входы, приведенные в -l
и -p
надлежащим образом, но третий вход -d
не разбирается.
Выход:
[email protected]:~/$ ./play.sh -l "l is parsed" -p "p is parsed" -d "d is parsed"
l is parsed
p is parsed
Это работает
[email protected]:~/$ ./play.sh -p "p is parsed"
p is parsed
В то время как это не работает
[email protected]:~/$ ./play.sh -d "d is parsed"
Usage: ./play.sh [-l <song name>] [-p <song name>] [-d <song name> ]
Что я здесь делаю неправильно? Спасибо за вашу помощь заранее.
Совершенный !! так глупо от меня !! Спасибо :) –
@SagarSakre, Welcome:) - – Kalanidhi
Я думаю '': l: p: d: "' должно быть '' l: p: d: "' ... – anishsane