10 Stimmen

Bash basename-Syntax

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.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X