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

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

./myscript.sh data1 

вместо

 ./myscript.sh data1.dat 

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

  • Описание списка пакетов
  • Bash: Почему используется eval и shift в скрипте, который анализирует аргументы командной строки?
  • Asteriks в имени файла, поскольку wildcard не работает
  • Получить возраст процесса из командной строки
  • Команда работает в командной строке, но не работает в сценарии оболочки
  • Сетевой ввод-вывод и дисковый ввод-вывод без установки каких-либо или использования сторонних библиотек
  • Может ли сценарий bash сбросить и дезинфицировать * всю * среду и как?
  • Почему команда history ничего не делает в файле сценария?
  • 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

    Как открыть файл изменений с помощью wirehark?

    FTP: удаление всего каталога

    Альтернативный источник для пакета, удаленный из тестирования или нестабильной репо

    Поиск сценария для преобразования имени файла с обратной косой чертой в структуру каталогов с файлами

    Могу ли я запустить Linux на тонкий клиент сетевого терминала N130?

    apt-get не распознает TeX как уже установленный

    ImageMagick: PNG to GIF: сделать любой не полностью прозрачный пиксельный массив

    Публикация записи ARP

    Обратное совпадение в sed, замените противоположное тому, что было найдено

    почему мне нужно исправить ядро ​​linux, чтобы использовать spandband pandaboard?

    Запуск нескольких команд nohup в фоновом режиме

    vimdiff – Weird Issue, сравнивающая 2 файла

    Установка Ubuntu, как мне ее распознать Crucial RealSSD C300?

    Должны ли мы позволить перезаписывать модули Python, установленные RPM?

    В bash, grep для строки, начинающейся с \, и присваивания результата с помощью обратных шагов

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