Кластеризация идентичных файлов без учета пробелов и разрывов строк

Вам необходимо разбить тест if на структуру с несколькими типами

if [ -f "$LaunchDaemon" ]
then
  echo $LaunchDaemon found
elif [ -f "$launchAgent" ]
then
  echo $launchAgent found
elif [ ... 
  ...
else
  echo Not found
fi

(заполните пробелы самостоятельно).

Если вы хотите найти все совпадения, просто сделайте это как несколько тестов, задав переменную, чтобы видеть, было что-то найдено или нет.

found=0
if [ -f "$LaunchDaemon" ]
then
  echo $LaunchDaemon found
  found=1
fi
if [ -f "$launchAgent" ]
then
  echo $launchAgent found
  found=1
fi
...
if [ $found == 0 ]
then
  echo Not found
fi

Иногда мы хотим установить переменную, чтобы мы знали, какая из них была найдена. Это обычное дело при попытке найти подходящую программу или файл (например, в старые времена у нас могли быть / usr / lib / sendmail или / usr / sbin / sendmail в зависимости от Дистрибутив ОС, поэтому нам нужно будет поискать его, чтобы найти).

found=
for f in "$LaunchDaemon" "$launchAgent" "$mobileLaunchDaemon" "$mobileAgent"
do
  [[ -f "$f" ]] && found="$f"
done

Теперь у нас есть $ found , указывающий на найденную запись, и мы можем проверить это.

if [ -n "$found" ]
then
  echo Found: $found
else
  echo Nothing found
fi

Второй цикл также может найти все версии с незначительными изменениями:

found=
for f in "$LaunchDaemon" "$launchAgent" "$mobileLaunchDaemon" "$mobileAgent"
do
  [[ -f "$f" ]] && found="$found $f"
done

Обратной стороной этого является то, что впереди может быть начальный пробел, поэтому мы должны удалить это:

found="${found# }"
2
08.05.2015, 14:46
0 ответов

Теги

Похожие вопросы