
편집: 내 사용 사례에 꼭 필요한 것은 아니기 때문에 동적으로 계산된 변수 이름에 대한 요구 사항을 변경했으며 나에게 적합한 솔루션이 제공되었습니다.
아마도 불가능할 것입니다. 그러나 다음과 같습니다.
ASCII xyz(위도, 경도, 깊이) 3배인 입력 파일에 대해 일부 서식 지정 및 파일 형식 변환을 수행하고 다양한 출력 파일 형식을 생성하는 bash 스크립트가 있습니다. 나는 이와 유사한 스크립트를 작성할 때마다 출력 파일 이름을 뒤섞는 일을 피하려고 노력하고 있습니다. 출력 파일 이름을 계산하는 방법을 찾으려고 노력하고 있는 것 같습니다.전 세계적으로내 시스템에서는 export
bashrc의 출력 파일 이름 접미사를 '' 지정하거나 내 스크립트에서 제공되는 다른 파일을 사용하여 입력 파일 이름을 지정합니다.
예를 들어 일반적인 스크립트에서는 명령줄에 제공된 입력 파일에서 동적으로 출력 파일 이름을 작성합니다.
INPUT=$1
INPUT_SUFFIX=`echo $INPUT | cut -d. -f2`
INPUT_BASE=$(basename $INPUT .$INPUT_SUFFIX)
OUTPUT_TEXT="${INPUT_BASE}txt"
OUTPUT_TIFF="${INPUT_BASE}tif"
OUTPUT_GRID="${INPUT_BASE}grd"
#...etc, plus other output formats
나는 모든 스크립트에서 이러한 지루한 출력 파일 이름 정의를 수행하지 않아도 되는 방법을 찾으려고 노력하고 있습니다. 매번 코드를 간단히 복사하여 붙여넣을 수 있다는 것을 알고 있지만, 출력 파일 이름을 한 번 생성하고 시스템 전체에 걸쳐 전체적으로 구성하는 방법을 정의하는 것이 더 효율적입니다.
그래서어느내가 작성하는 스크립트는 임의의 값에 대해 다음 $1
과 같은 변수입니다.$OUTPUT_TIFF
이미입력에서 동적으로 계산되며 "${1}.tif"로 평가됩니다.
답변1
쉬운 방법마른일반 파일에 공통 코드를 작성하고 필요할 때마다 파일을 소싱하는 것입니다. 배쉬에서인수를 전달할 수도 있습니다. 하지만 이는 "동적으로 계산된" 것이 아니라 "요청 시"입니다. 즉, 어떤 이유로든 변경되면 $1
변수를 업데이트하기 위해 소스를 다시 찾아야 합니다.