Ich habe ein Shell-Skript geschrieben, um eine Reihe von Dateien zu erstellen. Der Benutzer gibt die Anzahl der Dateien und deren Dateierweiterung über die Befehlszeile an. Hier ist mein CodeErstellen von Dateien spezifischen Typs
#!/bin/bash
NUM_FILES=0
FILE_TYPES=""
LOCATION=`pwd`
if [ $# -eq 0 ]; then
echo "**** ERROR: You must specify the number of files you wish to create and (optional) the file types.\n\n"
exit 1
fi
if [ ! -z $1 ]; then
NUM_FILES=$1
fi
if [ ! -z $2 ]; then
FILE_TYPES=$2
else
FILE_TYPES=".tmp"
fi
n=$NUM_FILES
for ((i=1; i <= n; i++))
do
touch TEMP_FILE_$i.$FILE_TYPES #Files created here - this is where my script needs work
echo "Created file " TEMP_FILE_$i.$FILE_TYPES
done
Meine Frage bezieht sich auf das Erstellen von Dateien eines bestimmten Typs. Das zweite an die Befehlszeile übergebene Argument ($FILE_TYPES
) wird verwendet, um die Erweiterung anzugeben, die Sie verwenden möchten (txt, java, py, usw.), aber wenn ich das Skript ausführe, interpretiert Linux alle Dateien als Text und fügt einfach die hinzu Erweiterung auf das Ende des Dateinamens.
zB bash createFiles.sh 4 java
läuft in vier Textdateien führen wird erstellt mit dem Namen TEMP_FILE_1.java
aber das Verzeichnis in Linux-GUI Betrachten zeigt die Dateien des Typs sein text
.
Wie kann ich das Shell-Skript so ändern, dass es Dateien des angegebenen Typs erstellt?
Ich habe gerade Ihr Skript getestet und es tut genau das, was Sie wollen. Können Sie "ls -lh" in Ihrer Konsole versuchen und die Ausgabe anzeigen? –
'wenn [! -z $ 1]; ... fragt wirklich nach Ärger. Schreiben Sie einfach 'NUM_FILES = $ {1: -0}; FILE_TYPES = $ {2: -. Tmp} ' –
Hallo William - Ich bin relativ neu im Shell-Scripting, also kann ich fragen, warum diese Aussage nach Ärger fragt? Es soll überprüft werden, ob das erste an das Skript übergebene Argument nicht null ist. –