Строковый путь к файлу не работает при использовании в качестве аргумента команды

#bash #unix #cat

#bash #unix #cat

Вопрос:

Я пытаюсь использовать относительный путь в качестве аргумента для другой команды. Похоже, что автоматическое расширение пути не работает, потому что это строка. Как вы можете передать строковую переменную cat команде, чтобы она разрешила файл?

 PEM="~/.ssh/my.pem"; cat $PEM
// cat: ~/.ssh/my.pem: No such file or directory

PEM=~/.ssh/my.pem; cat $PEM
// gives key
 

Ответ №1:

Расширение Tilde ( ~ ) не выполняется оболочкой при помещении в кавычки или экранировании.

Расширение правильно происходит, когда вы ставите ~ внешние кавычки:

 PEM=~"/.ssh/my.pem"; cat "$PEM"
 

Вместо этого вы также можете использовать переменную HOME среды:

 PEM="$HOME/.ssh/my.pem"; cat "$PEM"