디렉터리의 파일을 인수로 사용하지만 확장자는 사용하지 않습니다.

디렉터리의 파일을 인수로 사용하지만 확장자는 사용하지 않습니다.

.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

관련 정보