Ich spiele mit Skripten herum. Ich kann ein Skript erstellen, das mich beim Ausführen zur Eingabe eines Namens für ein neues Verzeichnis auffordert, es erstellt, dann mehrere Dateien erstellt, Zeilen wiedergibt und dann alles löscht.
Was ich tun möchte, ist es leicht zu verändern, damit es das Verzeichnis selbst erstellt und benennt!
Scheint eine sinnlose Übung zu sein, die ich kenne, aber damit herumzuspielen ist der beste Weg, den ich lerne.
Hier ist mein aktuelles Skript:
#!/bin/bash
echo "Give a directory name to create:"
read NEW_DIR
ORIG_DIR=$(pwd)
[[ -d $NEW_DIR ]] && echo $NEW_DIR already exists, aborting && exit
mkdir $NEW_DIR
cd $NEW_DIR
pwd
for n in 9 8 7 6 5 4 3 2 1 0
do
touch file$n
done
ls file?
for names in file?
do
echo This file is named $names > $names
done
cat file?
cd $ORIG_DIR
rm -rf $NEW_DIR
echo "Goodbye"
9 8 7 6 5 4 3 2 1 0
in Ihrem Code kann verkürzt werden{9..0}
und Sie können auch die gesamtefor
Schleife durch ersetzentouch file{9..0}
.Antworten:
Anstatt den
read
Befehl zu verwenden, um den Wert vonNEW_DIR
aus der Eingabe abzurufen , können Sie den fest codierten Wert für die Variable NEW_DIR folgendermaßen festlegen :Ersetzen Sie die folgende Zeile in Ihrem Skript:
mit folgender Zeile:
quelle
Wenn Sie eine Überraschung wünschen, können Sie anstelle einer Hardcodierung des Namens beispielsweise eine Technik verwenden, um eine zufällige Zeichenfolge zu generieren
Dies setzt
NEW_DIR
eine Zeichenfolge aus acht alphanumerischen Zeichen. Jedes Mal, wenn Sie das Skript ausführen, hat das neue Verzeichnis einen anderen zufälligen Namen ...Oder um ein zufälliges Wort zu erhalten, wählen Sie ein Wörterbuch aus
/usr/share/dict/
und verwenden Sieshuf
zum Beispiel:Damit
quelle
Anstatt zur Benutzereingabe aufzufordern, können Sie Werte mithilfe des Variablenzuweisungsoperators (=) in Skripte fest codieren. Somit sind die folgenden zwei Zeilen,
kann durch eine einzelne Zeile ersetzt werden.
Übrigens, ich weiß, dass dies für die Frage nicht relevant ist, aber in der
for
Schleife, die Sie in Ihrem Skript verwendet haben, können Sie Kurzcode für den Bereich schreiben. Stattdessen9 8 7 6 5 4 3 2 1 0
können Sie es als schreibenquelle
Sie können sogar noch einen Schritt weiter gehen: Sie können "read" anweisen, einen Vorschlag für den Ordnernamen anzubieten, ihn durch Drücken der Eingabetaste zu akzeptieren oder ihn nach Belieben zu ändern:
Dies würde eine Linie zeigen:
Um mit den obigen Vorschlägen zu kombinieren, können Sie Folgendes tun:
Beachten Sie, dass read -p "text" zur Eingabe des Textes auffordert und in derselben Zeile nach der Antwort fragt. Wenn Sie sich an Ihren Code halten und ihn nach dem 2-Zeilen-Format fragen möchten, können Sie dies tun
quelle