![디렉터리의 파일을 인수로 사용하지만 확장자는 사용하지 않습니다.](https://linux55.com/image/84061/%EB%94%94%EB%A0%89%ED%84%B0%EB%A6%AC%EC%9D%98%20%ED%8C%8C%EC%9D%BC%EC%9D%84%20%EC%9D%B8%EC%88%98%EB%A1%9C%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%A7%80%EB%A7%8C%20%ED%99%95%EC%9E%A5%EC%9E%90%EB%8A%94%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
.dat 확장자가 없는 스크립트에서 매개변수로 사용할 수 있는 "data1.dat"라는 파일이 있습니다.
./myscript.sh data1
바꾸다
./myscript.sh data1.dat
이것이 가능합니까? 그렇다면 어떻게 하시겠습니까?
답변1
전적으로. 주어진 입력에 대해 일부 텍스트 처리를 수행하면 됩니다(아직 .로 끝나지 않은 경우 .dat
) .dat
.
#! /bin/bash
if [[ $# -lt 1 ]]; then
echo "Usage: $0 <datafile name>" >&2
exit 1
fi
DATFILE="$1"
if [[ "$DATFILE" != *".dat" ]]; then
DATFILE="${DATFILE}.dat"
fi
if [[ ! -r "$DATFILE" ]]; then
echo "Error: Data file '${DATFILE}' does not exist." >&2
exit 1
fi
echo "Using data file '${DATFILE}'..."
답변2
확장자가 항상 .dat라고 가정
filedat=$(dirname -- "$1")/$(basename -- "$1" .dat).dat
어디
$1
그것은 논쟁이다$(dirname -- "$1")
디렉토리 이름이 선택됩니다(dirname ../foo/bar/baz.dat )
=>../foo/bar
$(basename -- "$1" .dat)
선택적으로 트립됩니다.dat$(basename foo.dat .dat)
=>foo
,$(basename foo .dat)
=>foo