Sto provando a scrivere uno script che prende il nome di base di un argomento, quindi controlla se c'è un'estensione in tale argomento. Se c'è, stampa l'estensione.Bash basename sintassi
Ecco il mio codice:
file=basename $1
ext=${file%*}
echo ${file#"$stub"}
echo $basename $1
sto facendo eco al $ basename finale $ 1 a controllare che l'output di basename è.
Alcuni test rivelano:
testfile.sh one.two
./testfile: line 2: one.two: command not found
one.two
testfile.sh ../tester
./testfile: line 2: ../tester: No such file or directory
../tester
Quindi né $ basename $ 1 sono lavorando. So che si tratta di un errore di sintassi, quindi qualcuno potrebbe spiegare cosa sto facendo male?
EDIT:
Ho risolto il mio problema ora con:
file=$(basename "$1")
stub=${file%.*}
echo ${file#"$stub"}
che riduce la mia tesi a un nome base, grazie a tutti voi.
La sintassi corretta è file = $ (basename $ 1). Ti consiglierei di usare file = $ {1 ## * /}, che rimuoverà ogni sequenza '* /'. In realtà è molto più veloce del comando basename, specialmente quando si elaborano file in un loop. –