Вместо того, чтобы использовать строку в качестве аргумента командной строки, вы можете просто использовать cat
для чтения стандартного ввода скрипта:
printf '%s\n' "$foo"
if [ "$bar" = "-" ]; then
# assume data is on standard input
cat
else
print '%s\n' "$bar"
fi
Вы, кажется, перепутали T
с t
. Изman ps
:
T stopped by job control signal
t stopped by debugger during the tracing
В любом случае, чтобы перевести процесс в состояние T
(, остановите ), kill -STOP
его PID или нажмите Ctrl+Z во время его работы в терминале. Чтобы перевести процесс в состояниеt
(трассируемого ), присоединитесь к нему с помощью ptrace, но не позволяйте ему продолжаться, как это делает strace. Один из способов сделать это — запустить gdb
, затем attach
для его PID.