Wie erstelle ich ein neues Verzeichnis durch ein shell-Skript in Linux?

Ich versuche zu erstellen neues Verzeichnis /proj mit Unterverzeichnissen bin, cgi, sbin, etc... wenn /proj existiert nicht. Jedoch, anstelle der Schaffung von mehreren Unterverzeichnissen, es schafft ein einziges Unterverzeichnis mit dem Namen {Changes...src}

#If project directory exists, then do not create a new one.                             
if [ -d /proj ]; then
     echo "Project directory exists. New directory will not be created."

#Otherwise, create a new project directory.                                             
else
     echo "Project directory does not exist. Creating a new project directory..."
     mkdir -p proj/{Changes,Makefile,bin,cgi,doc,etc,html,lib,sbin,src}
fi

Was bin ich, um die Unterverzeichnisse, die ich will?

  • Welche shell benutzt du? Getestet habe ich mkdir -p proj/{a,b,c} in beiden /bin/csh und /bin/bash, und bekam das erwartete Ergebnis (alle Unterverzeichnisse wurden erstellt).
  • Dein script funktioniert bei mir in der bash (version4.2.42) für mich. (Ich habe noch #!/bin/bash und ich entfernt den Schrägstrich vor der proj auf der Linie if [ -d proj ];. Ich weiß nicht, ob das den Unterschied gemacht.)
  • Wenn Sie printenv | grep SHELL sollten Sie herausfinden, welche shell Sie ausführen...
  • Ich glaube nicht, dass das einen Unterschied macht; es ist nicht so, dass "keine Verzeichnisse" angelegt, sondern "ein einziger mit einem langen Namen". Also das problem ist definitiv mit der mkdir Linie.
  • echo proj/{Changes,Makefile,bin,cgi,doc,etc,html,lib,sbin,src}. Was ist Ihr Ausgang für diese.
  • Ich habe bash, version 4.1.5(1)-release(i486-pc-linux-gnu)
  • & ja, es ist etwas falsch mit der mkdir Linie. Es funktioniert gut nackt, sondern erstellt nur ein einziges Unterverzeichnis in das shell-Skript.

InformationsquelleAutor Stephen | 2013-02-01
Schreibe einen Kommentar