Use o arquivo no diretório como argumento, mas sem a extensão

1

Eu tenho um arquivo chamado "data1.dat", quero poder usar o arquivo como um argumento no meu script sem a extensão .dat:

./myscript.sh data1

em vez de

./myscript.sh data1.dat

isso é possível? Se sim, como você faria isso?

    
por tom 22.02.2016 / 20:54

2 respostas

2

Absolutamente. Você só precisa fazer algum processamento de texto da entrada fornecida - se ela ainda não tiver terminado em .dat , basta adicionar o .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}'..."
    
por 22.02.2016 / 20:59
1

assumindo que a extensão é sempre .dat

filedat=$(dirname -- "$1")/$(basename -- "$1" .dat).dat

onde

  • $1 é argumento
  • $(dirname -- "$1") escolherá o nome da pasta (dirname ../foo/bar/baz.dat ) = > %código%
  • ../foo/bar irá disparar opcional .dat $(basename -- "$1" .dat) = > $(basename foo.dat .dat) , foo = > %código%
por 22.02.2016 / 21:18