Ich versuche, ein Skript zu schreiben, das den Basisnamen eines Arguments annimmt und dann prüft, ob es eine Erweiterung in diesem Argument gibt. Wenn ja, gibt es die Erweiterung aus.
Hier ist mein Code:
file=basename $1
ext=${file%*}
echo ${file#"$stub"}
echo $basename $1
Ich gebe das letzte $basename $1 als Echo aus, um zu prüfen, was die Ausgabe von basename ist.
Einige Tests haben ergeben:
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
Also weder $basename $1 funktionieren. Ich weiß, es ist ein Syntaxfehler, so könnte jemand erklären, was ich falsch mache?
EDIT:
Ich habe mein Problem jetzt damit gelöst:
file=$(basename "$1" )
stub=${file%.*}
echo ${file#"$stub"}
Das reduziert mein Argument auf einen Basisnamen, vielen Dank an alle.