Qualcosa di veramente semplice e ingenuo:
echo "$PATH"|grep -q whatever && echo "found it"
Dove tutto ciò è quello che stai cercando. Invece di &&
è possibile inserire $?
in una variabile o utilizzare un'istruzione if
corretta.
Limitazioni includono:
- È possibile che questo corrisponderà stringhe dei percorsi più grandi (provate corrispondenza su "bin" e sarà probabilmente trovarlo, nonostante il fatto che "bin" non è nel percorso,/bin e/usr/bin sono)
- Quanto sopra non si espanderà automaticamente scorciatoie come ~
o utilizzando un perl one-liner:
perl -e 'exit(!(grep(m{^/usr/bin$},split(":", $ENV{PATH}))) > 0)' && echo "found it"
Questo ha ancora il limite che non farà alcuna espansione della shell, ma non fallisce se una sottostringa corrisponde. (Il precedente corrisponde a "/usr/bin
", nel caso in cui non fosse chiaro).
fonte
2009-09-08 20:14:09
Corrispondenza con inizio/fine riga e due punti come nella risposta JasonWoof si prende cura della limitazione della sottostringa. L'espansione delle tilde non è un problema comune, dal momento che molte persone permettono che venga espansa quando viene assegnata (ad esempio 'PATH =" ~/bin: $ PATH "'), ma può essere gestita con una sostituzione, se necessario. – Cascabel
Bello, qualcuno ha downvoted questo dopo 3,5 anni. E non ha lasciato un commento. Noioso. –
Sto utilizzando la soluzione grep che avvolge il pattern con i due punti. – elias