bash: невозможно обрезать путь с помощью «dirname» - путь - это каталог - PullRequest
0 голосов
/ 06 мая 2020

Согласно dirname --help, команда dirname /usr/bin/sort выведет /usr/bin

Итак, я попробовал это:

  1 #!/bin/bash
  2
  3 rawPath="${1}"
  4 trimmed=dirname $rawPath
  5 echo $trimmed

И запустил скрипт:

 bash ./trimPath.sh /files/data/swx_i/raw/2020/03

Вывод:

./trimPath.sh: line 5: /files/data/swx_i/raw/2020/03: is a directory

Это потому, что я сохраняю путь в переменной или что-то еще?

GNU bash, версия 4.1.2 (2) -release (x86_64- redhat- linux -gnu)

1 Ответ

4 голосов
/ 06 мая 2020

Эта строка:

trimmed=dirname $rawPath

временно установит для переменной среды trimmed значение dirname, а затем попытается запустить $rawPath. Это то, на что он жалуется, на тот факт, что вы пытаетесь запустить каталог.

Если вы хотите, чтобы результат этой команды был помещен в переменную, вы смотрите на что-то вроде :

trimmed="$(dirname "$rawPath")"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...