嵌套的else语句,期望的操作数

问题描述 投票:0回答:1

如果if语句嵌套在for循环中。预期的操作数。错误令牌是:

Ubuntu Linux

for i in "${dir_path[@]}"; do
  if [ "$dir_path[i]" ]; then     <--- this line
     echo "$filename found, Directory: $i"
  else
     echo "$filename not found"
  fi
done

它正确找到路径,但显示错误:“期望操作数(错误标记为”第一目录“]

bash
1个回答
0
投票

要遍历数组的索引,请使用

for i in "${!dir_path[@]}" ; do
#           ^

要检查文件是否存在,请使用[ -f "${dir_path[i]}" ](用于数组,或与$i相同用于关联数组)。您所拥有的总是正确的,因为它检查字符串"$dir_path[i]"是否不为空,而永远不会为空,因为它始终至少包含[i]

© www.soinside.com 2019 - 2024. All rights reserved.