Bash скрипт для проверки существования файла - PullRequest
0 голосов
/ 23 марта 2020

Я пытаюсь проверить наличие файловых путей, записанных в текстовом файле (пользователя jane). Это файл list.txt:

001 jane /data/jane_profile_07272018.doc
002 kwood /data/kwood_profile_04022017.doc
003 pchow /data/pchow_profile_05152019.doc
004 janez /data/janez_profile_11042019.doc
005 jane /data/jane_pic_07282018.jpg
006 kwood /data/kwood_pic_04032017.jpg
007 pchow /data/pchow_pic_05162019.jpg
008 jane /data/jane_contact_07292018.csv
009 kwood /data/kwood_contact_04042017.csv
010 pchow /data/pchow_contact_05172019.csv

Это сценарий, который я написал:

#!/bin/bash
file=$(grep ' jane ' ../data/list.txt | cut -d ' ' -f 3)
for i in $file
do
  i="~${i}"
  if (test -e $i); then echo "File exists"; else echo "File doesn't exist"; fi
done

Я не понимаю, почему команда

test -e ~/data/jane_profile_07272018.doc

это правда, но когда я пишу это как в сценарии выше, он возвращает ложь. Это связано с тем, как я добавляю ~? Без этого команда сама по себе возвращает false.

1 Ответ

1 голос
/ 23 марта 2020

~ перед ~/data/jane_profile_07272018.doc примерно эквивалентно $HOME/data/jane_profile_07272018.doc. Таким образом, вместо поиска файла в root /, он ищет файл в вашем каталоге HOME.

Вы должны сделать:

if [[ -e "$file" ]]; then
    echo "$file: exists"
else
    echo "file: does not exist"
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...