Lo script (con singole virgolette lo script awk) funzionerà come previsto:
$ cat script-single
#!/bin/bash
line="foo bar"
echo $line | awk '{print $1}'
$ ./script-single test
foo
Di seguito, invece, sarà pausa (lo script darà una riga vuota):
$ cat script-double
#!/bin/bash
line="foo bar"
echo $line | awk "{print $1}"
$ ./script-double test
Notare le doppie virgolette sul programma awk
.
Perché le virgolette doppie espandere la variabile $1
, il comando awk otterrà lo script {print test}
, che stampa il contenuto della variabile awk test
(che è vuoto). Ecco uno script che dimostra che:
$ cat script-var
#!/bin/bash
line="foo bar"
echo $line | awk -v test=baz "{print $1}"
$ ./script-var test
baz
lettura correlati: Bash Reference Manual - Quoting e Shell Expansions
Non sarà sostituito. Sarà la prima parola in '" $ line "' – user000001
Lo scopo delle citazioni singole attorno al programma "awk'" "è assicurarsi che bash non tenti di eseguire alcuna espansione dei parametri, quindi lo script funzionerà come previsto. –
@CostiCiudatu la parola è espansione – SheetJS