Если входные данные были в формате JSON (, это выглядит подозрительно похоже ), можно было бы использоватьjq
:
$ jq -r '."hbase.tmp.dir"' file.json
/var/lib/ambari-metrics-collector/hbase-tmp
Это может быть изменено, если есть какая-либо сложная структура данных, очевидно.
Неплохая привычка явно указывать, что что-то находится в текущем каталоге,особенно когда это что-то является сценарием или программой (, альтернативой в этом случае может быть .
в вашем $PATH
, что обычно считается угрозой безопасности).
Бывают ситуации, когда у вас будет ./
в начале имени пути, независимо от того, хотите вы этого или нет. Например, пути, найденные с помощью find
при поиске от .
вниз, всегда будут иметь префикс ./
.
В других ситуациях имя файла может мешать параметрам утилиты, например, при попытке удалить файл с именем -f
с помощью
rm -f
Использование
rm./-f
решит, что (./-f
не будет рассматриваться как вариант rm
), как и
rm -- -f
do (--
сигнализирует об окончании любых опций командной строки ).
Также обратите внимание, что шаблоны оболочки, такие как *
, могут расширяться до файлов с начальным дефисом. Поэтому безопаснее, например,. цикл по ./*
, чем по *
(, если вы не используете --
для разграничения неизвестного имени файла от опций, заданных утилитам ).
Поэтому рекомендуется использовать ./
в именах путей, особенно если имя пути хранится в переменной и исходит из какого-то источника, внешнего по отношению к сценарию.