双 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

但是,当我尝试评估第二个条件时,我收到“没有这样的文件或目录”错误,但这不是真的,该文件存在。为什么我收到此错误?有人可以帮助我吗?

谢谢。

BR。

答案1

您收到的错误是由于您config对两个不同的变量使用了相同的名称 ( )。

  1. 在内循环中读取具有文件名的变量。
  2. 接收该文件中每一行的变量。

因此,在第一次内部循环结束后,旧变量config现在具有配置文件的最后一行,而不是其路径。

相关内容