Je suis en train d'utiliser getopts comme ceci:Comment utiliser getopts dans un script bash?
#!/bin/bash
while getopts "i" option
do
case "${option}"
in
i) INT=${OPTARG};;
esac
done
echo "$INT"
Mais il imprime $ INT que si j'utilise getopts "i:"
. Si je comprends bien, les deux-points dans l'optstring signifient que les valeurs sont requises pour les drapeaux correspondants. Mais je veux rendre ce drapeau optionnel. Quelqu'un peut-il expliquer pourquoi le script agit comme ceci et comment puis-je le réparer?
La présence du signe deux-points signifie qu'un argument d'option est requis. L'absence de deux points signifie qu'aucun argument d'option n'est attendu du tout. Le manuel de Bash sur ['getopts'] (http://www.gnu.org/software/bash/manual/bash.html#index-getopts) ne supporte pas les arguments optionnels. Pour cela, vous auriez besoin de GNU 'getopt' (avec beaucoup de sémantique différente). –
@JonathanLeffler ah, merci beaucoup. Je pense que j'ai besoin de supprimer ma question car elle ne peut pas être répondue. – kusayu
Voir la question connexe [Utilisation de 'getopts' dans le script shell Bash pour obtenir des options de ligne de commande longues et courtes] (https://stackoverflow.com/questions/402377/using-getopts-in-bash-shell-script-to-get -long-and-short-command-line-options). Ce n'est pas une copie directe, mais contient des informations utiles. –