Необходимо использовать while
, нет for
. Способ избежать команд, глотая стандартный вход в таком цикле состоит в том, чтобы просто использовать другой дескриптор файла:
while read -u 9 server; do
ssh $server "uname -a"
done 9< /home/kenny/list_of_servers.txt
Для получения дополнительной информации, help [r]ead
(действительно) и другая статья, объясняющая, почему.
Эта функция поддерживается DragonFly BSD, где это называют различными символьными ссылками. Посмотрите man varsym
и man ln
для деталей.
Символьные ссылки статичны: файловая система просто хранит строку, и доступы к символьной ссылке перенаправляются в файл, имя которого (относительно местоположения символьной ссылки) является той строкой.
Было бы просто записать файловую систему FUSE, выставляющую такие динамические символьные ссылки, но я не знаю о существующем.
Я предполагаю, что это - двоичные файлы, таким образом, я сделал бы это с экспертом переменной ПУТИ, чем символьная ссылка.
PATH=$PATH:/base/$ARCH/bin
.
Если Вы используете инструмент как cfengine или марионетка. Символьная ссылка на соответствующий каталог может быть создана на основе архитектуры системы.
Если Вы просто хотите, чтобы более простой синтаксис ввел, чем:
cd $(uname -i)
Вы могли поместить его в переменную как:
s=`uname -i`
в Вашем сценарии входа в систему, таким образом, можно просто сделать
cd $s
Когда Вы хотите к CD
символьная ссылка является по существу файлом со специальным флагом, который содержит некоторый путь и этот путь, интерпретируемый, как, таким образом, Вы не можете сделать одну символьную ссылку для указания на другие местоположения таким образом. Но все еще можно записать сценарий, который выполнит соответствующую сборку.