Bash интерпретирует присвоение переменной как команду

Они эквивалентны, за исключением крайних пределов переносимости. mknod... pизначально был единственным способом создания именованных каналов, но POSIX решил опустить его и изобрел вместо него mkfifo, по-видимому, потому, что именованные каналы по своей сути являются более переносимой концепцией, чем все другие вещи mknod, которые можно делать с устройствами и их старшие и младшие числа. Системный вызов mknodтакже был исключен из ранних версий POSIX.

Таким образом, для переносимости на древний UNIX mknod... pлучше. Для современных систем mkfifoнемного лучше, хотя маловероятно, что вы найдете настоящий современный Unix, в котором mknod... pне работает.

1
24.08.2021, 20:26
1 ответ

Да, используйте eval, но вы должны вызвать выполнение командной строки.

eval $varName=$($varCmd)

А можно было...

declare cmd="$varName=$($varCmd)"
eval $cmd
1
27.08.2021, 10:07

Теги

Похожие вопросы