Dalla sezione OPTIONS
della manpage:
-i If the -i option is present, the shell is interactive.
Dalla sezione Special Parameters
della manpage:
- Expands to the current option flags as specified upon invoca-
tion, by the set builtin command, or those set by the shell
itself (such as the -i option).
Dalla sezione Parameter Expansion
della manpage:
${parameter#word}
${parameter##word}
La parola viene espansa per produrre un motivo proprio come nel percorso nome espanso. Se il modello corrisponde all'inizio del valore del parametro , il risultato dell'espansione è il valore espanso del parametro con il modello di corrispondenza più breve (il caso '' # '' ) o il modello di corrispondenza più lungo (il '' ' ## 'caso') cancellato. Se il parametro è @ o *, l'operazione di rimozione del motivo viene applicata a turno a e l'espansione è l'elenco risultante . Se parametro è una variabile di matrice con @ o *, l'operazione di rimozione del motivo viene applicata a ciascun membro dell'array a turno e l'espansione è l'elenco risultante .
Così "${-#*i}"
dice espandere la variabile $-
e rimuovere dall'inizio della stringa fino a quando la lettera i
. Tale espansione viene quindi confrontata con !=
rispetto all'espansione di $-
(la stessa variabile solo non modificata).
Quando ciò non sia lo stesso significa la prima espansione rimosso alcuni contenuti che significa la lettera i
apparso nel valore di $-
che significa che (poiché -i
non è un argomento per set
) che l'argomento -i
stato passato al shell e la shell è una shell interattiva.
fonte
2014-11-19 19:11:25
Ha senso. Grazie! Lo accetterò quando posso. – Santiago