Как отфильтровать замену команды из результирующего значения readlink для символической ссылки?
Это может быть плохо названо, так как я не совсем уверен, как называется этот процесс. По сути, я хочу получить только последнюю часть пути символической ссылки, и я пытаюсь использовать тот же метод, который я использую с PWD.
Например: если я сделаю
PWD
это печатает
/opt/ct/mydir
если я сделаю
echo ${PWD##*/}
печатает только последнюю часть
mydir
Таким образом, используя этот дизайн, я могу сделать
readlink mysymlink
который дает
/opt/ct/somedir
и я могу сделать
TMP=$(readlink mysymlink)
echo ${TMP##*/}
и он напечатает
somedir
Так что теперь, как я могу объединить эту последнюю часть в одну строку, как
TMP=$(readlink mysymlink && echo ${TMP##*/})
???
Пример, который я показываю, дает мне два сцепленных результата... один с полным путем, а другой только с той частью, которую я хочу. Я хочу только этот последний каталог.
Я тоже пробовал
TMP=${ $(readlink mysymlink)##*/}
но безрезультатно
1 ответ
Суффиксы подстановки переменных могут использоваться только с переменными, а не подстановками команд. Вы должны либо установить переменную и изменить ее в отдельных операторах, как в первой попытке, либо использовать дополнительные подстановки команд:
TMP=$(basename $(readlink))