- Entscheide dich, ob es
dstep
oder istdlstep
. Aus dieser Bash-Falle :
for i in
Der BashParser führt BraceExpansion vor anderen Erweiterungen oder Ersetzungen durch. Der Klammererweiterungscode sieht also das Literal
$n
, das nicht numerisch ist, und erweitert daher die geschweiften Klammern nicht in eine Liste von Zahlen. Dies macht es nahezu unmöglich, Klammererweiterungen zu verwenden, um Listen zu erstellen, deren Größe nur zur Laufzeit bekannt ist.Tun Sie dies stattdessen:
for ((i=1; i<=n; i++)); do ... done
Oder verwenden
seq
.Ihr Skript liest sich
$cindex_
als Variable mit dem Namencindex_
. Sie möchten$_
.Variablen richtig zitieren. Es ist hier vielleicht nicht entscheidend, aber im Allgemeinen. Z.B:
mkdir "$_$dindex"
Es gibt kein Shebang. Es wäre egal, wenn Sie das Drehbuch besorgen würden; aber wenn Sie es ausführen, sollte es ein Shebang wie
#!/bin/bash
oder geben#!/usr/bin/env bash
. Wegen$1
,$2
usw. ich denke, das Skript ausgeführt werden soll.
Das Erstellen von Dokumenten funktioniert nicht
341
Bercovici Adrian
Hallo, ich versuche, Ordner zu generieren und sie anhand von Eingabeparametern zu benennen. Was ist in diesem Skript falsch?
root=$1 clcount=$2 clstep=$3 delay=$4 dstep=$5 echo $root echo $clcount echo $clstep echo $delay echo $dstep echo creating docs for dindex in {$delay..100..$dlstep} do for cindex in {$clcount..1..$clstep} do fname=$cindex_$dindex rm -rf $fname mkdir $cindex_$dindex done done echo All finished
Das Skript erstellt keine Ordner ... und verkettet die Werte von $cindex
und dindex
in einer Zeichenfolge nicht.
Die Klammererweiterung funktioniert nur mit Literalwerten, nicht mit Variablen. Verwenden Sie stattdessen `seq`.
choroba vor 6 Jahren
0
1 Antwort auf die Frage
2
Kamil Maciorowski
Aber in meinem Fall ist "n" ein Argument, das von der Eingabe erhalten wurde. Also brauche ich nicht "i <= $ n"?
Bercovici Adrian vor 6 Jahren
0
@BercoviciAdrian Diese Syntax von `for` benötigt kein` $ `. Probier es einfach.
Kamil Maciorowski vor 6 Jahren
0
Verwandte Probleme
-
1
Pausieren Sie alle Aufgaben außer x CPU-intensiven Aufgaben
-
10
Wie kann ich die Bash-Historie durchsuchen und einen Befehl erneut ausführen?
-
2
Kann die Ausgabe eines Befehls an zwei andere Befehle weitergeleitet werden?
-
8
Benennen Sie eine Gruppe von Dateien mit einem Befehl um
-
2
Warum aktualisiert sich mein Pfad nicht * jetzt *?
-
5
Wie entferne ich einen symbolischen Link zu einem Verzeichnis?
-
8
Rette mich vor dem Kauderwelsch
-
9
Wie kann ich jeder Zeile einer Textdatei eine Zeilennummer und einen Tabulator voranstellen?
-
1
Wann sollte ich Konfigurationen in .bashrc vs einfügen? .bash_profile?
-
1
Umleitung: Wie kam das zusätzliche Wort in die Datei?