ダブル 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

ただし、2番目の条件を評価しようとすると、「ファイルまたはディレクトリはありません。」エラーが発生しますが、これは本当ではなく、ファイルが存在します。このエラーが発生するのはなぜですか?誰でも私を助けることができますか?

ありがとうございます。

BR

ベストアンサー1

発生したエラーは、config2つの異なる変数に同じ名前()を使用したために発生します。

  1. 内部ループからファイル名を持つ変数を読み込みます。
  2. ファイルの各行を受け取る変数です。

したがって、最初の内部ループが終了した後、前の変数にはそのパスの代わりconfigに設定ファイルの最後の行があります。

おすすめ記事