Использовать файл в каталоге в качестве аргумента, но без расширения

Вы можете использовать seq -w 1 218 или seq -f "% 03g" 1 218 для создания ваши числа.

1
22.02.2016, 21:54
2 ответа

Совершенно верно. Вам просто нужно немного обработать текст введенного ввода - если он еще не заканчивается на .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
27.01.2020, 23:26

предполагается, что расширение всегда .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 , $ (базовое имя foo .dat) => foo
1
27.01.2020, 23:26

Теги

Похожие вопросы