![마치 스크립트에 인수로 전달된 것처럼 읽기 명령의 환경 변수를 구문 분석하는 방법](https://linux55.com/image/201870/%EB%A7%88%EC%B9%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%20%EC%9D%B8%EC%88%98%EB%A1%9C%20%EC%A0%84%EB%8B%AC%EB%90%9C%20%EA%B2%83%EC%B2%98%EB%9F%BC%20%EC%9D%BD%EA%B8%B0%20%EB%AA%85%EB%A0%B9%EC%9D%98%20%ED%99%98%EA%B2%BD%20%EB%B3%80%EC%88%98%EB%A5%BC%20%EA%B5%AC%EB%AC%B8%20%EB%B6%84%EC%84%9D%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
호출 시 인수를 전달하거나 인수가 전달되지 않으면 지침과 함께 프롬프트를 표시하는 스크립트가 있습니다. $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}")"