Как отфильтровать замену команды из результирующего значения 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))
Другие вопросы по тегам