마치 스크립트에 인수로 전달된 것처럼 읽기 명령의 환경 변수를 구문 분석하는 방법

마치 스크립트에 인수로 전달된 것처럼 읽기 명령의 환경 변수를 구문 분석하는 방법

호출 시 인수를 전달하거나 인수가 전달되지 않으면 지침과 함께 프롬프트를 표시하는 스크립트가 있습니다. $FILE_LOC를 매개변수로 전달하고 이를 $1에 할당하기 전에 확장할 수 있지만 읽기 명령을 사용하면 리터럴 "$FILE_LOC"가 저장됩니다. read 명령어 사용시 환경변수로 입력을 주면 확장할 수 있는 좋은 방법이 없을까요? 나는 eval을 사용하는 트릭을 보았지만 더 깔끔한 기본 제공 방법이 있기를 바랍니다.

예를 들어 사용자 입력과 매개변수 입력은 동일하며 입력은 /full/path/to/file, ./relative/path/to/file, ~/home/path/to/file, $saved_path/th_to_file, ${saved_pa​ ​th_to_file}/ 하위 폴더도 비슷합니다.

if (( $# -eq 0 )); then
    read -p "Enter target file location:" file_loc
else
    file_loc="$1"
fi

echo "the full path is $(realpath "{$file_loc}")"

관련 정보