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

У меня есть файл с именем «data1.dat», я хочу иметь возможность использовать этот файл в качестве аргумента в моем скрипте без расширения .dat:

./myscript.sh data1 

вместо

 ./myscript.sh data1.dat 

возможно ли это, если да, как бы вы это сделали?

  • Как ускорить работу скрипта на основе поиска grep?
  • Извлечь файлы с определенным расширением файла и сохранить структуру каталогов?
  • удаление избыточности из выходных столбцов
  • Как я должен обрабатывать shebang при написании моей собственной оболочки?
  • Как создать и обработать строку в оболочке Bourne FreeBSD?
  • Почему я получаю «строка 1: $ ': \ r': command not found"?
  • / bin / cat: слишком длинный список аргументов
  • возможна одиночная команда jq с несколькими выходами?
  • 2 Solutions collect form web for “Использовать файл в каталоге как аргумент, но без расширения”

    Абсолютно. Вам просто нужно сделать некоторую текстовую обработку введенного ввода – если он еще не заканчивается на .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}'..." 

    Умножающееся расширение всегда .dat

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

    где

    • $1 – аргумент
    • $(dirname -- "$1") выберет имя dir (dirname ../foo/bar/baz.dat ) => ../foo/bar
    • $(basename -- "$1" .dat) отключит дополнительный .dat $(basename foo.dat .dat) => foo , $(basename foo .dat) => foo
    Interesting Posts

    Как оболочка решает, какую из ключевых слов, встроенных и внешних команд запускать?

    Каковы обычные разрешения файлов для каждого типа файлов до применения umask

    Нужна помощь для объединения трех разделенных строк сценария bash в одну строку

    Первые символы команды, повторяющиеся на дисплее при завершении

    Шаги по настройке iPod shuffle в Fedora 19

    Могу ли я получить доступ к массиву, созданному в одном скрипте awk в последующем скрипте awk?

    Ошибка Yum в Centos: новичок

    Как найти выражения?

    Кто-нибудь использует Red Hat Enterprise Linux для настольных компьютеров или рабочих станций дома?

    Передайте вывод предыдущей команды следующей в качестве аргумента

    Разница между Gentoo и Funtoo

    Как заставить службу /etc/xdg/autostart/app.desktop ждать службы (systemd)?

    Как просмотреть содержимое файла, который я удалил, но что процесс все еще записывает

    Ошибка OMP Bash на Ubuntu в Windows

    Извлечение нескольких файлов .tar.gz с помощью одного вызова tar

    Linux и Unix - лучшая ОС в мире.