
.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