Проверка существования папки с помощью case/switch

Что касается https://launchpad.net/~versable/+archive/ubuntu/elementary-update , этот ppa не имеет пакетов для 14.04 ( он же верный).

Если вы используете Ubuntu https://launchpad.net/~elementary-os/+archive/ubuntu/stable , который дает следующие строки:

deb http: //ppa.launchpad. net / elementary-os / stable / ubuntu trusty main deb-src http://ppa.launchpad.net/elementary-os/stable/ubuntu trusty main {{1 }}

Если вы не используете Elementary OS (но ванильный Ubuntu), просто убейте эти строки.

Они находятся в /etc/apt/sources.list или /etc/apt/sources.list.d .

-1
10.12.2013, 23:25
2 ответа

У операторов case нет возможности выполнять оценку условий так же, как у if/then. Оператор case/switch может только сопоставлять шаблоны и выполнять определенные случаи, основанные на сопоставлении.

Потенциальные решения

Я бы начал с использования [ ... ] вот так.

[ -d /path/to/folder1 ] && echo cmd1
[ -d /path/to/folder2 ] && echo cmd2
[ -d /path/to/folder3 ] && echo cmd3
[ -d /path/to/folder4 ] && echo cmd4
[ -d /path/to/folder5 ] && echo cmd5

Если впоследствии вам понадобится выполнять более сложные команды, то, возможно, вы захотите перейти на формальные if/then.

if [ -d /path/to/folder1 ]; then
  cmd1;
fi
3
29.04.2021, 00:44

Конечно, вы можете сделать это, используя сочетание globs / case.

Для отдельной папки вы сделаете следующее:

set X "$folder_name" "${folder_name}"*/; shift
case $2 in
   "$1/" ) echo "The folder <<${folder_name}>> exists." ;;
   * ) echo "The folder <<${folder_name}>> does not exist." ;;
esac
0
29.04.2021, 00:44

Теги

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