이중 do while 루프(BASH)

이중 do while 루프(BASH)

boucle에서 다음 이중 작업을 수행하려고합니다.

#!/bin/bash

#Router cisco
ls equipos/ |grep cisco |tr ' ' '\n' >> $$.cisco.tmp

config="/Users/joseluis/Desktop/prueba/config"

echo "XXXXXXXXXX ficheros"
echo $$.cisco.tmp
echo $config
echo "XXXXXXXXXX contenido tmp"
cat $$.cisco.tmp
echo "XXXXXXXXXX contenido config"
cat $config
echo "XXXXXXXXXX"


while IFS= read -r router
do
    echo "LOOP"
    echo $router

    echo "equipos/$router"

    while IFS= read -r config
    do

        grep "$config" "equipos/$router" &> /dev/null

            if [ $? == "1" ]; then
                echo "$router -> $config"
            fi  
    echo "---"
    echo "$config"
    echo "---"


    done <"$config"

done <"$$.cisco.tmp"

rm $$.cisco.tmp

$ ./script.sh 
XXXXXXXXXX ficheros
7405.cisco.tmp
/Users/joseluis/Desktop/prueba/config
XXXXXXXXXX contenido tmp
cisco.1
cisco.2
XXXXXXXXXX contenido config
a
1
XXXXXXXXXX
LOOP
cisco.1
equipos/cisco.1
---
a
---
cisco.1 -> 1
---
1
---
LOOP
cisco.2
equipos/cisco.2
./script.sh: line 41: : No such file or directory

그러나 두 번째 조건을 평가하려고 하면 "해당 파일 또는 디렉터리가 없습니다." 오류가 발생하지만 이는 사실이 아니며 파일이 존재합니다. 이 오류가 발생하는 이유는 무엇입니까? 누구든지 나를 도와줄 수 있나요?

감사해요.

B.R.

답변1

발생한 오류는 config두 개의 서로 다른 변수에 동일한 이름( )을 사용했기 때문에 발생합니다.

  1. 내부 루프에서 파일 이름이 있는 변수를 읽습니다.
  2. 파일의 각 줄을 받는 변수입니다.

따라서 첫 번째 내부 루프가 끝난 후 이전 변수에는 config이제 해당 경로 대신 구성 파일의 마지막 줄이 있습니다.

관련 정보