LINUX.ORG.RU

В первом случае выполнится q.sh и потом пойдет выполняться дальше. Во втором случае q.sh начнет выполняться, тем временем, процесс пойдет вперед.

KendovNorok
()

Полагаю что вот это: http://stackoverflow.com/a/11869737.

the «tty» command says «not a tty» if you're in the background, or gives the controlling terminal name (/dev/pts/1 for example) if you're in the foreground. A simple way to tell.

~> cat test.sh 
#!/bin/bash 

echo `tty` > test.txt

~> cat test1.sh 
#!/bin/bash

./test.sh &

~> cat test.txt 
not a tty

Т.е. работает.

rikardoac
()
Последнее исправление: rikardoac (всего исправлений: 1)

Можно попробовать проверять

if [ $! == $$ ] 
then
  #в фоне
else 
  #не в фоне
fi

ziemin ★★
()
Ответ на: комментарий от kdev

Ну и вчем смысл этого кода? Не легче ли просто проверять строку на равенство «Not a tty»?

проще - лучше, имхо.

anonymous
()

Как ... отличить

Во втором случае амперсанд в конце, бро.

anonymous
()
Ответ на: комментарий от anonymous

Не легче ли просто проверять строку на равенство «Not a tty»?

Еще легче вызывать tty -s и смотреть код завершения:

if tty -s ; then
# Не в фоне
else
# В фоне
fi

dexpl ★★★★★
()
Ответ на: комментарий от kdev

Интересно, никому так и не надоело отвечать, не подумав над вопросом?
tty показывает, запущен ли скрипт, когда включён 'job control', управление заданиями, и не более.
В общем случае узнать, как тебя запустили, нет.
Когда-нибудь, кто-нибудь, как-нибудь научится думать?
'a ; echo ${?}' и 'a & ; wait ${!} ; echo ${?}' не отличаются ничем, кроме реакции на сигналы, в sh, bash и т.д.
Всё остальное тем более варьируется.

ABW ★★★★★
()
Ответ на: комментарий от ABW

Если a.sh не хочет попадать в stopped state? Да ладно, фиг со всем этим.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.