我有一个名为“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