Вложенный оператор If else, ожидается операнд - PullRequest
0 голосов
/ 07 ноября 2019

Если еще оператор вложен в цикл 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

Он правильно находит пути, но отображает ошибку: «Операнд ожидается (токен ошибки« первый каталог »

»)

1 Ответ

0 голосов
/ 07 ноября 2019

Чтобы перебрать индексы массива, используйте

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

Чтобы проверить, существует ли файл, используйте [ -f "${dir_path[i]}" ] (для массива или то же самое с $i для ассоциативного массива),То, что у вас есть, всегда верно, поскольку оно проверяет, не является ли строка "$dir_path[i]" не пустой, которой она никогда не является, поскольку она всегда содержит по крайней мере [i].

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...