1 votos

No es capaz de leer argumento de línea de Comandos en shell script usando getopt en OS X Terminal

Estoy tratando de escribir un programa (utilizando el shell script de bash script) que aceptan el argumento de línea de comandos utilizando getopt.

Se está trabajando bien en la terminal de Linux, pero cuando la estoy usando en OS X, el Terminal no es capaz de leer el argumento de línea de comandos.

un código de ejemplo :

OPTS=`getopt -o f:l: --long FirstName:,LastName: -n 'parse-options' --   "$@"`
if [ $? != 0 ] ; then echo "Failed parsing options." >&2 ; exit 1 ; fi
echo "$OPTS"
eval set -- "$OPTS"
NEWLINE=$'\n'
while true; do
case "$1" in
  -f | --FirstName ) FirstName="$2" ; shift 2 ;;
  -l | --LastName ) LastName="$2" ; shift 2 ;;
  -- ) shift; break ;;
  * ) break ;;
esac
done
echo "${NEWLINE}"
echo "--------------------------------------------"
echo "FirstName=$FirstName"
echo "LastName=$LastName"
echo "${NEWLINE}"
sleep 1 

Entrada :

sh try.sh --FirstName foor --LastName bar

Salida en Linux (FC19):

--------------------------------------------
FirstName=foor

LastName=bar

Salida en Mac :

--------------------------------------------
FirstName=

LastName=

1voto

Ver man getopt. Básicamente la getopt que es parte de macOS no apoyo mucho la opción de nombres. El uso de

OPTS=`getopt f:l: $*`

funciona como se esperaba.

PS: El hombre de la página también se recomienda el uso de $* en lugar de "$@" , pero esto no está relacionado con su problema.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X