我将代码传递给python:
echo "print 'hello'" | python &
但在某些情况下,我需要将其传递给sudo python
,但我不知道是否有必要。所以我需要一个or
条件。如果python
抛出错误,则应将其传送到sudo python
。例如:
echo "print 'hello'" | python & | sudo python &
我该怎么做?
答案 0 :(得分:1)
原则上,您可以管道进入条件。
echo "print 'hello'" |
#### BROKEN
if python; then
: nothing
else
sudo python
fi
这里的问题是第一个python
可能会吃掉所有输入,然后sudo python
不会收到来自管道的任何输入。处理这种情况的一种方法是使用临时文件。
tempfile=$(mktemp -t) || exit
# Clean up if interrupted or when done
trap 'rm -f "$tempfile"' EXIT ERROR HUP INT TERM
echo "print 'hello'" >"$tempfile"
python <"$tempfile" || sudo python <"$tempfile"