Как ссылаться на переменную внутри строки в UNIX?

#unix #scripting #ksh

#unix #сценарии #ksh

Вопрос:

Я пишу новый скрипт, который создает псевдонимы на основе результатов запроса ls. Сам сценарий достаточно прост, однако то, что меня сбивает с толку, — это вызов псевдонима. Я не могу понять, как ссылаться на переменную, которую я сгенерировал в другой строке, когда я вызываю команду alias:

 for f in `ls -1 -O dir /dev/fs/`
do
  fl=`echo $f | tr '[:upper:]' '[:lower:]'`
  alias "$fl"_drive='cd /dev/fs/$f'
done
  

Именно эта ссылка на переменную $ f в вызове alias сбивает меня с толку. Кто-нибудь может пролить свет на правильный синтаксис для этого? Заранее спасибо.

Ответ №1:

Я предполагаю, что вы правильно хотите $f указать на файл, который вы в данный момент просматриваете.

Оболочка ничего не раскрывает внутри одинарных кавычек ( ' ), поэтому ваш псевдоним содержит литерал $f . Вместо этого используйте двойные кавычки.

 alias "$fl"_drive="cd /dev/fs/$f"
  

Ответ №2:

Попробуйте:

 alias "${fl}_drive"="cd /dev/fs/$f"