Это всегда ничего не возвращает: readlink $Somevar
. Я могу иметь "${Somevar}"
, "$Somevar"
, $Somevar
, или ${Somevar}
- это не имеет значения. Я продолжаю печатать Somevar
, и я знаю, что он имеет разумную ценность. Просто введите $Somevar
на терминал (один раз, когда я эхо/«отлаживаю» мой скрипт, чтобы дать мне относительный путь и прервать), я даю абсолютный путь. Но я должен иметь возможность получить абсолютный путь в скрипте!Как прописать ссылку на путь из переменной?
Возможно ли вообще использовать readlink в сочетании с переменной? Я откровенно не знаю, как readlink даже «знает», что ему передается переменная. Я думал, что даже в скрипте он будет расширен оболочкой перед вызовом readlink. Я протестировал его в терминале (без скриптов) с помощью «~/_src
». Единственный способ, которым это работает, - это написать, что без кавычек. Но если я присваиваю это значение переменной , то каждая другая функция на моей машине работает с ней, но readlink.
Как я могу получить абсолютный путь? Мне все равно, если я использую readlink. Я просто хочу получить абсолютный путь от родственника в скрипте.
UPDATE: (StackOverflow комментариев сломанные)
Я помечена как Linux. Я попросил readlink, потому что я также хочу перевести символические ссылки, но я прекрасно это делаю на отдельном шаге.
Кроме того, это не удается, а также: ABSDIR=`cd $RELDIR; pwd`
дает
bash: cd: ~/_src/: No such file or directory
(Который есть такой каталог, и cd
будет найти его, если я печатаю, что точное имя папки на терминале.) Теперь я предполагаю, что ~/
расширяется самим терминалом.
Итак, нет способа обработать такие пути? По-видимому, все утилиты, которые, как я думал, обрабатывали этими путями, работали только потому, что терминал расширяет путь до их вызова.
После того, стены, я прочитал еще один вопрос конкретно о тильде, который работает для всех относительных путей, которые я нашел. Решением является использование eval в переназначении вместо того, чтобы пытаться вставить eval в команду, которую вы хотите использовать с этим путем: '' '' eval echo $ {RELDIR //>} '' '' – SaburoutaMishima