$-
Les indicateurs d'option actuels sont-ils définis par le shell lui-même, lors de l'appel ou à l'aide de la set
commande intégrée:
$ echo $-
himBH
$ set -a
$ echo $-
ahimBH
"${-#*i}"
est la syntaxe pour la suppression de chaîne: (de la documentation POSIX )
$ {paramètre # [mot]}
Supprimer le plus petit motif de préfixe. Le mot doit être développé pour produire un motif. Le paramètre expansion doit alors donner lieu à paramètre, la plus petite partie du préfixe correspondant au modèle étant supprimée. S'il est présent, le mot ne doit pas commencer par un '#' non cité.
$ {paramètre ## [mot]}
Supprimer le plus grand modèle de préfixe. Le mot doit être développé pour produire un motif. Le paramètre expansion doit alors donner lieu à paramètre, la plus grande partie du préfixe correspondant au modèle étant supprimée.
Alors ${-#*i}
supprimez la chaîne la plus courte jusqu'au premier i
caractère:
$ echo "${-#*i}"
mBH
Dans votre cas, if [ "${-#*i}" != "$-" ]
vérifier si votre shell est interactif ou non.