Ich versuche ein Verzeichnis zu erstellen und cd
hinein:
In ~ / .bashrc:
function abc() {
appname=$1
appdir="$HOME/code/$appname"
if [ mkdir $appdir -a cd $appdir ]; then
echo Success
else
echo Failed to create and switch directory
fi
}
Wenn ich bashrc ( . ~/.bashrc
) neu lade , wird folgende Fehlermeldung angezeigt :
bash: [: too many arguments
Failed to create and switch directory
Wie behebe ich das? Und was bedeutet [:
der Fehler?
Ps. Könnte mich jemand zu einem "nicht kryptischen" Bash-Scripting-Tutorial führen?
if <COMMANDS>; then <COMMANDS>; fi
Antworten:
Der Hauptfehler in Ihrem Skript besteht darin, dass der
[
Befehl, der dem Befehl entsprichttest
, zum Testen von Bedingungen wie Zeichenfolgenvergleich, Vorhandensein von Dateien usw. verwendet wird.Um den Exit-Status von Prozessen zu testen, müssen Sie
if
ohne verwenden[
, damit Ihr Skript sein kannDies wird in Bash Pitfalls erklärt: 9. if [grep foo myfile .
Ich schlage vor, Sie gehen den GrayCat Bash Guide durch, um Bash zu verstehen.
quelle
Ein Prototyp könnte sein:
touch newDirectory.sh
chmod +x newDirectory.sh
./newDirectory.sh anyName
/.
Kleine Empfehlung: Wenn Sie neu sind, legen Sie sich nicht an
.bashrc
:)quelle
{
. 2) es läuft niemkdir
. 3) Sie haben dencd
Exit-Status nicht getestet . 4) Fügen Sie keine Erweiterungen für Skripte hinzu. Vor allem nicht,.sh
wenn es nicht einmal ein Sh-Skript ist. 5) Das Einfügen in ein Skript macht den Zweck der Funktion zunichte. mywiki.wooledge.org/BashGuide{
war da vor meiner bearbeitung.'
mkdir "$ {appdir}"'
(siehe die hinteren Häkchen )