-f $file_name은 ~/file_name을 사용할 때 작동하지 않지만 /home/james/file_name을 사용할 때는 작동합니다.

-f $file_name은 ~/file_name을 사용할 때 작동하지 않지만 /home/james/file_name을 사용할 때는 작동합니다.

이것이 나를 미치게 만들었습니다. 나는 매우 간단한 스크립트를 가지고 있습니다

#!/bin/bash

read -p "Enter changeList.txt file name: " file_name

if  [ -f $file_name ]; then
    echo "Reading File..."
    cat $file_name | grep "Change " | cut -d ' ' -f 2
    echo "Process complete"
else
    echo >&2 "File Note Found."
    exit 1
fi 

echo "Exiting..."
exit 0

~/changeList.txt 파일을 전달했는데 실패했습니다. /home/james/changeList.txt를 전달하면 작동합니다. 나는 노력한다

file_name=~/changeList.txt
[ -f $file_name ] && echo "true" || echo "false"

내 터미널에서 true를 반환합니다.
저는 wsl 2에서 Ubuntu를 사용하고 있으며 james로 로그인했습니다.

답변1

물결표 확장은 변수 확장 전에 발생합니다. 할당에서 오른쪽 값은 물결표 확장을 거치므로 변수에 전체 경로가 할당됩니다. 자세한 내용은 참조하세요 man bash.

관련 정보