使用目录中的文件作为参数但不带扩展名

使用目录中的文件作为参数但不带扩展名

我有一个名为“data1.dat”的文件,我希望能够在脚本中使用该文件作为参数,而不使用 .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

相关内容