Я создал файл test.sh
который содержит команду ls -ltr & jobs
. Когда я запускаю его, он дает мне вывод ls -ltr
, но для jobs
команда ничего мне не дает, даже не ошибка.4Как запустить команду «jobs» в сценарии оболочки?
Что-то не так?
Я создал файл test.sh
который содержит команду ls -ltr & jobs
. Когда я запускаю его, он дает мне вывод ls -ltr
, но для jobs
команда ничего мне не дает, даже не ошибка.4Как запустить команду «jobs» в сценарии оболочки?
Что-то не так?
- это интерактивная команда - она не предназначена для использования со скриптами и не делает ничего полезного в скрипте (но она может правдоподобно сделать что-то полезное в функции оболочки, вызванной из интерактивного сеанса; отключение его в коде тоже не подходит).
Чтобы отслеживать фоновые задания, соберите их PID: с, когда вы их запустите.
ls -ltr &
pid=$!
printf 'pid: %s' "$pid"
Как и в стороне, ['ls' обычно не вызывается из скриптов] (http://mywiki.wooledge.org/ParsingLs); но я понимаю, что он используется в качестве простого примера заполнителя здесь. – tripleee
См. Также http://stackoverflow.com/questions/690266/why-cant-i-use-job-control-in-a-bash-script – tripleee
Используйте '&&' вместо' & '. –
@Vadim, '&' отлично подходит для 'bash', это терминатор оператора« run in background », аналогичный'; 'но не ожидающий. Фактически, OP может ожидать, что 'jobs' фактически покажет, что' ls' работает параллельно. – paxdiablo
В программировании детали очень важны. Чтобы получить хороший ответ, вам нужно показать нам, как выглядит ваш сценарий. – John1024