A criação de documentos não funciona

0

Olá, eu estou tentando gerar pastas e nomeá-las de acordo com os parâmetros de entrada O que está errado neste script?

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 

O script não criará nenhuma pasta ... e de alguma forma não concatena os valores de $cindex e dindex em uma string.

    
por Bercovici Adrian 30.08.2018 / 16:41

1 resposta

2
  1. Decida se é dstep ou dlstep .
  2. De esta armadilha de Bash :

    for i in {1..$n}

    The BashParser performs BraceExpansion before any other expansions or substitutions. So the brace expansion code sees the literal $n, which is not numeric, and therefore it doesn't expand the curly braces into a list of numbers. This makes it nearly impossible to use brace expansion to create lists whose size is only known at run-time.

    Do this instead:

    for ((i=1; i<=n; i++)); do
    ...
    done
    

    Ou use seq .

  3. Seu script lê $cindex_ como uma variável com o nome cindex_ . Você quer ${cindex}_ .

  4. Cite as variáveis corretamente. Pode não ser crucial aqui, mas em geral. Por exemplo:

    mkdir "${cindex}_$dindex"
    
  5. Não há shebang. Não importa se você comprou o roteiro; mas se você executá-lo, deve haver um shebang como #!/bin/bash ou #!/usr/bin/env bash . Por causa de $1 , $2 etc. Acho que o script foi criado para ser executado.

por 30.08.2018 / 16:58

Tags