我正在尝试在 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
对两个不同的变量使用了相同的名称 ( )。
- 在内循环中读取具有文件名的变量。
- 接收该文件中每一行的变量。
因此,在第一次内部循环结束后,旧变量config
现在具有配置文件的最后一行,而不是其路径。