В bash я могу обратиться к последней работе с %+
или %%
, но я не могу это сделать в /bin/sh
.Refer to jobs in sh
Учитывая следующий сценарий:
#!/bin/[ba]sh
some_job() {
sleep 1
sleep 1
sleep 1
sleep 1
sleep 1
sleep 1
}
some_other_job() {
sleep 1
}
echo "some_job"
some_job &
echo "some_other_job"
some_other_job &
echo "sleep"
sleep 2
kill %1
jobs -l
запуская его с bash
хорошо, но исполнение его sh
дает мне ошибку.
$ ./mwe.sh
some_job
some_other_job
sleep
./mwe.sh: 25: kill: No such process
[2] + 2446 Done
[1] + 2445 Running
$ ps
PID TTY TIME CMD
2445 pts/0 00:00:00 mwe.sh
2453 pts/0 00:00:00 sleep
2494 pts/0 00:00:00 ps
3587 pts/0 00:00:01 zsh
Как я могу обратиться к заданиям в /bin/sh
?
Означает ли это все, что я начинаю с '&' получает из-под контроля? –
Следует предположить, что '/ bin/sh' относится к оболочке POSIX, а не к оболочке Bourne. – chepner
Как говорит чепнер - Борн - это оболочка 1970-х годов. POSIX sh, созданный в 90-х годах, является гораздо более новым стандартом: если современные оболочки были надмножеством Борна, 'echo foo^cat' выдавал' foo' на stdout, а не 'foo^cat' - как в Bourne, в отличие от POSIX sh, '^' - символ канала. –