sudoer пишет:Не работает while все равно.
тут не в while проблема:
откройте man bash, и нажмите / (это поиск), наберите \<exec\> (это поиск только слова целиком, execute не найдётся), увидите это:
exec [-cl] [-a name] [command [arguments]]
If command is specified, it replaces the shell. No new process is created. The arguments become
the arguments to command. If the -l option is supplied, the shell places a dash at the beginning
of the zeroth arg passed to command. This is what login(1) does. The -c option causes command to
be executed with an empty environment. If -a is supplied, the shell passes name as the zeroth
argument to the executed command. If command cannot be executed for some reason, a non-interac‐
tive shell exits, unless the shell option execfail is enabled, in which case it returns failure.
An interactive shell returns failure if the file cannot be executed. If command is not specified,
any redirections take effect in the current shell, and the return status is 0. If there is a re‐
direction error, the return status is 1.
что значит, данная команда заменяет оболочку, а вовсе не выполняет строчку. т.е. выполняется первая команда, которая подменяет собой скрипт, и вы вываливаетесь обратно в командную строку. А я вам советовал eval...
кстати, ампресанд & внутри скриптов не работает, это интерактивная команда. помнится я долго мучился, в поисках решения, оно оказалось простым: достаточно запускать отдельный процесс, и уж он будет работать параллельно. об этом здесь (уж простите за PR, но повторю, нигде больше не было/не смог найти/непонашему и непонятно)
И ещё, let следует применять для вычислений, а просто присваивание - для присваивания. У вас наоборот:
let NUMA=`wc -l list`
NUM=$NUMA+1
Карусель разнесло по цепочке за час
Всех известий — конец
Да, весна началась!
(всё к лицу подлецу, как родному отцу, не рассказывай, батя, и так всё пройдёт)