Если вы можете изменить testarg.sh
, и в противном случае он ничего не выводит, просто измените его, чтобы вывести его файл журнала со строкой вроде:
echo testarg.$(date +%blah).$$.log
затем используйте:
fspec=$($CUSTBIN/testarg.sh)
у твоего родителя.
В качестве альтернативы, вы можете предоставить функцию-обертку для выполнения работы:
#!/bin/bash
function fgpid() {
"$@" &
pid=$!
ps -ef | grep ${pid} | sed 's/^/DEBUG:/' >&2 # debugging
wait ${pid}
echo ${pid}
}
fspec=testarg.$(date +%d%b%y).$(fgpid sleep 5).log
echo ${fspec}
Это производит:
pax> ./qq.sh
DEBUG:pax 2656 2992 con 15:27:00 /usr/bin/sleep
testarg.09Jun10.2656.log
как и ожидалось.
Или это, если вы думаете, что ваш исполняемый файл может что-то выводить. Этот сохраняет PID в переменную:
#!/bin/bash
function fgpid() {
"$@" &
pid=$!
ps -ef | grep ${pid} | sed 's/^/DEBUG:/' >&2 # debugging
wait ${pid}
}
fgpid sleep 5
fspec=testarg.$(date +%d%b%y).${pid}.log
echo ${fspec}