Sono sempre sorpreso che nella cartella sia /binpresente un [programma.
È questo che viene chiamato quando stiamo facendo qualcosa del tipo if [ something ]:?
Chiamando [esplicitamente il programma in una shell, chiede un corrispondente ]e quando fornisco la parentesi di chiusura sembra non fare nulla, indipendentemente da ciò che inserisco tra parentesi.
Inutile dire che il solito modo di ottenere aiuto su un programma non funziona, cioè né man [né [ --helpfunziona.
man '['funziona bene per me - o hai dimenticato di citare [o hai una diversa definizione di "opere".
[valuta i suoi argomenti, quindi è necessario disporre di spazi tra tutti. [ a=b ]non è un confronto: sarà sempre vero (è una singola stringa: "a = b", che viene sempre valutata come vera ) E dovresti limitare il numero di argomenti a 4 (anche se le recenti implementazioni consentiranno di più .. Limitare a 4 lo rende più portabile, ad esempio: [ "a" = "b" ]ha già 4 argomenti: "a" "=" "b" e la fine non necessaria dell'argomento arg: "]"). Se hai bisogno di più: prove a catena con ad esempio:if [ "$Var_a" = "foo" ] && [ "$Var_b" = "bar" ] ; then : do something ; fi
!da solo (senza caratteri di escape e non quotati) non verrà sostituito, e lo sarebbe ancora di più if ! [ .... Tutte le espansioni bash che usano !includono almeno su altri personaggi
[-builtin in bash(e forse anche altre shell) e che questo può essere usato al posto di /bin/[. Inoltre c'è il testcomando, che su molti sistemi è un collegamento simbolico a /bin/[(o viceversa) - ma su altri è un comando separato.
[riferisce altestcomando, noexpr, quindi dovrebbe essereman test