J'ai besoin d'aide, j'ai besoin de créer une séquence de fichiers. Ex. 1.log 2.log 3.log 4.log et ainsi de suite, détail J'ai besoin de définir la valeur initiale et la valeur finale qu'il crée pour moi dans le dossier souhaité. Ci-dessous le code plus ou moins avec l'idée que je veux, le fichier s'appelle inuti.sh
#!/bin/sh echo -e " ENTER INITIAL NUMBER: " read num1 echo -e " ENTER THE FINAL NUMBER NOW: "; read num2 #num3 = num1 #num4 = num2 cd /var/actus/digital/nfce/inutilizar/ touch {$num1..$num2}.log ls /var/actus/digital/nfce/inutilizar/
génère un fichier exemple comme s'il avait défini 1 et 2, il génère {1 ..2} .log et moi devons générer 1.log et 2.log
3 Réponses :
Vous pouvez utiliser l'utilitaire seq
qui peut imprimer des nombres consécutifs:
#!/bin/bash
Si le nombre de chiffres est supérieur à 5, vous pouvez augmenter la valeur à l'intérieur p >
BTW sera beaucoup plus facile si vous changez la première ligne de votre script de
#!/bin/sh
à
touch $(seq -f "%5.0f.log" $num1 $num2)
et gardez le reste. IMHO cette expression (avec des accolades) ne fonctionne pas dans Bourne Shell.
Cela pourrait fonctionner à des fins limitées et il est possible que des fins limitées soient tous les besoins du demandeur. Mais si le demandeur s'attend à quelque chose comme le comportement habituel du journal système, il manquera ce que fait une rotation réelle du journal, les nombres seront inversés par rapport au temps, il ne compressera pas les fichiers plus anciens ou ne les supprimera pas, etc.
@ChrisStratton, tout cela est correct. Mais à partir de la question OP, je ne vois rien sur la rotation des journaux, la compression, etc.
La forme valide de expansion d'accolades
nécessite que des entiers soient présents entre les crochets.
Lorsque vous exécutez votre script, seule une substitution d'entier a lieu, ce qui convertit {$ num1 .. $ num2}
en, par exemple, {1..2}
. Pour que ce formulaire correct soit traité ultérieurement, utilisez la commande eval
:
eval touch {$num1..$num2}.log
-rw-r--r-- 1 runner runner 0 Jul 30 05:49 3.txt -rw-r--r-- 1 runner runner 0 Jul 30 05:49 2.txt -rw-r--r-- 1 runner runner 0 Jul 30 05:49 1.txt
Si vous recherchez le comportement habituel des journaux système, c'est un peu plus complexe et les nombres incrémentiels remontent en arrière dans le temps, pas en avant.