2015-07-26 4 views
-2

Я создал файл test.sh который содержит команду ls -ltr & jobs. Когда я запускаю его, он дает мне вывод ls -ltr, но для jobs команда ничего мне не дает, даже не ошибка.4Как запустить команду «jobs» в сценарии оболочки?

Что-то не так?

+1

Используйте '&&' вместо' & '. –

+1

@Vadim, '&' отлично подходит для 'bash', это терминатор оператора« run in background », аналогичный'; 'но не ожидающий. Фактически, OP может ожидать, что 'jobs' фактически покажет, что' ls' работает параллельно. – paxdiablo

+0

В программировании детали очень важны. Чтобы получить хороший ответ, вам нужно показать нам, как выглядит ваш сценарий. – John1024

ответ

1

- это интерактивная команда - она ​​не предназначена для использования со скриптами и не делает ничего полезного в скрипте (но она может правдоподобно сделать что-то полезное в функции оболочки, вызванной из интерактивного сеанса; отключение его в коде тоже не подходит).

Чтобы отслеживать фоновые задания, соберите их PID: с, когда вы их запустите.

ls -ltr & 
pid=$! 
printf 'pid: %s' "$pid" 
+0

Как и в стороне, ['ls' обычно не вызывается из скриптов] (http://mywiki.wooledge.org/ParsingLs); но я понимаю, что он используется в качестве простого примера заполнителя здесь. – tripleee

+0

См. Также http://stackoverflow.com/questions/690266/why-cant-i-use-job-control-in-a-bash-script – tripleee

Смежные вопросы