Рейтинг:0

-f $file_name не работает при использовании ~/file_name, но работает при использовании /home/james/file_name

флаг cn

Это сводило меня с ума. У меня есть довольно простой скрипт

#!/бин/баш

read -p "Введите имя файла changeList.txt: " имя_файла

если [-f $имя_файла]; тогда
    эхо "Чтение файла..."
    кот $имя_файла | grep "Изменить" | вырезать -d '' -f 2
    эхо "Процесс завершен"
еще
    echo >&2 "Найдена примечание к файлу."
    выход 1
фи 

эхо "Выход..."
выход 0

Я передаю ему файл ~/changeList.txt, который терпит неудачу. Я передаю его /home/james/changeList.txt, и он работает. я попробую

имя_файла=~/changeList.txt
[ -f $file_name ] && echo "true" || эхо "ложь"

с моего терминала, и он возвращает true.
Я использую Ubuntu на wsl 2, и я вошел в систему как Джеймс.

флаг hr
Связано: [Почему не выполняется расширение тильды при вводе для чтения?] (https://askubuntu.com/questions/1093906/why-isnt-tilde-expansion-performed-on-the-input-to-read)
Рейтинг:1
флаг tm

Расширение тильды происходит перед раскрытием переменной. В присваивании правостороннее значение подвергается расширению с помощью тильды, поэтому переменной присваивается полный путь. Видеть человек для деталей.

James Ayres avatar
флаг cn
Знаете ли вы, есть ли способ сделать расширение тильды из входящей строки или я должен просто не передавать тильду?
флаг tm
`man bash` упоминает `set expand-tilde On` с `read -e`, но я не смог заставить его работать.
флаг au
@JamesAyres Есть множество вариантов (разной степени сложности и надежности) в вопросе stackoverflow ["Как вручную расширить специальную переменную (например: ~ тильда) в bash"] (https://stackoverflow.com/questions /3963716/как-вручную-расширить-специальную-переменную-ex-тильду-в-bash).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.