Como imprimir uma concatenação de strings no Korn Shell

1

Este é o meu script

[root@localhost scripts]# cat nested.sh
#!/bin/ksh

echo Enter the level of nesting
read lev
echo Enter the directory \( Enter the Absolute Path\)
read path
echo Enter the directory name
read $dirname
cd $path
for((i=1;i<=$lev;i++));
 do
  mkdir '$dirname$i'
  cd '$dirname$i'
 done
echo $dirname$i

Suponha que, no final, o valor de $ dirname seja "fold" e o valor de $ i seja "5".
Eu estava esperando a última declaração echo $dirname$i para imprimir fold5
mas em vez disso, só imprime 5.

Alguém por favor pode explicar como imprimir "fold5"?
Alguém também pode explicar por que ele só imprimiu 5 para mim?

    
por Dhiwakar Ravikumar 26.08.2015 / 21:07

1 resposta

2

você tem um erro de digitação na linha 8 do seu script, deve ser: %código% Essa é a razão pela qual você só recebe '5' impresso, porque $ dirname está vazio.

O que está acontecendo é que quando você executa read dirname , o shell expande '$ dirname' para o valor que está vazio.

Além disso, em uma nota lateral, use sempre aspas duplas ao incluir variáveis.

Roteiro revisado:

#!/bin/ksh

echo Enter the level of nesting
read lev
echo Enter the directory \( Enter the Absolute Path\)
read path
echo Enter the directory name
read dirname
cd $path
for((i=1;i<=$lev;i++));
 do
  mkdir "$dirname$i"
  cd "$dirname$i"
 done
echo "$dirname$i"
    
por 26.08.2015 / 21:24

Tags