Nome do diretório do espaço de loop [duplicado]

0

Eu tenho um CT.txt com os dados de entrada abaixo. CT.txt:

test testing test 1

E com o script abaixo:

#!/bin/bash
for CITY in $(cat /home/user/CT.txt)
do
 FILES=/mnt/dir1/dir2/$CITY/*
echo $FILES

Me dando saída da seguinte forma:

/mnt/dir1/dir2/test
/mnt/dir1/dir2/testing
/mnt/dir1/dir2/test/*
/mnt/dir1/dir2/1/*

onde a saída deve ser:

/mnt/dir1/dir2/test
/mnt/dir1/dir2/testing
/mnt/dir1/dir2/test 1

Como fazer com que o arquivo CT.txt leia com espaço entre o teste 1 .

    
por Amrut Nadgiri 03.08.2017 / 08:23

2 respostas

0

Se você alterar o FS (separador de campo) no awk, poderá alcançá-lo.

awk -F: '{ print "/mnt/dir1/dir2/"$1 }' CT.txt
    
por 03.08.2017 / 10:33
0

Supondo que o CT.txt tenha entradas uma / linha, o loop while é mais adequado à sua tarefa:

while IFS= read -r CITY; do
   FILES=/mnt/dir1/dir2/$CITY
   echo "$FILES"/*
done < /home/user/CT.txt

O for loop é inadequado para isso, mas ainda pode funcionar:

# set the input field separator to newline and disable globbing
IFS=$'\n';set -f
for CITY in $(< /home/user/CT.txt); do
   FILES=/mnt/dir1/dir2/$CITY
   echo "$FILES"/*
done
    
por 03.08.2017 / 12:56