bash: попробуйте найти мою ошибку с проверкой наличия файла - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь найти свою ошибку в моем bash скрипте:

открыть файл с именем файла (1 за строкой)

проверить каждое имя файла, если оно существует

позиция файла: ~ / student_code / data /

моя тестовая команда работает:

if test -e ~/student_code/data/john_18.doc; then echo "File exists"; else echo "File doesn't exist"; fi

эхо-файл существует

Но не мой сценарий

#!/bin/bash

files=$(grep " john " ../data/listing.txt | cut -d ' ' -f 3)   #find file with john in listing.txt
#echo "$files"  #testing line => OK
path="~/student_code"
for file in $files;
do
        output="${path}${file}"    # concate path
        echo "$output";            
# testing line => 1st output: ~/student_code/data/john_18.doc

        if test -e "${output}";    # test for existence of the file
                then echo "File exists";
        else echo "File doesn't exist"; fi
done

вывод: файл не существует для каждого файла

Я не очень доволен bash, так что это может быть идиотская ошибка.

Заранее спасибо,

1 Ответ

2 голосов
/ 13 апреля 2020

~ не раскрывается в вашем домашнем каталоге в двойных кавычках. Вы проверяете наличие вашего файла в каталоге с буквальным именем ~, который, конечно, не существует.

Вы можете либо опустить кавычки:

path=~/student_code

, либо использовать $HOME вместо ~:

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