From e0b15e0804f27419e331504feb1470df70b45c3d Mon Sep 17 00:00:00 2001 From: olli Date: Sun, 24 Mar 2024 11:34:57 +0100 Subject: [PATCH] run interactive python shell from bash --- gaboshlib/g_python.sh | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 gaboshlib/g_python.sh diff --git a/gaboshlib/g_python.sh b/gaboshlib/g_python.sh new file mode 100644 index 0000000..486ffbe --- /dev/null +++ b/gaboshlib/g_python.sh @@ -0,0 +1,37 @@ +function g_python { + + unset g_python_result + g_tmp=/tmp + g_rnd=$$ + # Use python in backround for multiple python commands running much faster + if [ -z "${g_python_running}" ] + then + mkdir -p ${g_tmp}/${g_rnd} + [ -p ${g_tmp}/${g_rnd}/python-in ] || mkfifo ${g_tmp}/${g_rnd}/python-in + [ -p ${g_tmp}/${g_rnd}/python-out ] || mkfifo ${g_tmp}/${g_rnd}/python-out + echo "while 1: + exec(open(\"${g_tmp}/${g_rnd}/python-in\").read()) +" >${g_tmp}/${g_rnd}/python-pipeexec.py + + # bc stream channel + { python3 -u ${g_tmp}/${g_rnd}/python-pipeexec.py >${g_tmp}/${g_rnd}/python-out 2>&1 & } + g_python_running="true" + fi + + # do python + local g_python_jobs + mapfile -t g_python_jobs < <(jobs -r) + #echo "Jobs $g_python_jobs" + #if jobs -r | grep -q python-pipeexec.py + if [[ $g_python_jobs =~ python-pipeexec.py ]] + then + echo $@ >${g_tmp}/${g_rnd}/python-in & + read -t 0.1 g_python_result <${g_tmp}/${g_rnd}/python-out + echo "RESULT: $g_python_result" + else + echo "FAIL: $g_python_result" + unset g_python_running + fi + +} +