bash에게 말할 수있는 작은 bash 함수를 작성하고 싶 import os
거나 from sys import stdout
가져온 모듈로 새로운 Python 인터프리터를 생성합니다.
후자의 from
기능은 다음과 같습니다.
from () {
echo "from $@" | xxd
python3 -i -c "from $@"
}
내가 이것을 부르면 :
$ from sys import stdout
00000000: 6672 6f6d 2073 7973 2069 6d70 6f72 7420 from sys import
00000010: 7374 646f 7574 0a stdout.
File "<string>", line 1
from sys
^
SyntaxError: invalid syntax
>>>
바이트 from sys
는
66 72 6f 6d 20 73 79 73 20
f r o m s y s
거기에는 EOF가 없지만 파이썬 인터프리터는 마치 EOF를 읽는 것처럼 동작합니다. 스트림 끝에 줄 바꿈이 있으며 예상됩니다.
from
전체 파이썬 모듈을 가져 오는 자매는 다음과 같이 보이고 문자열을 위생 처리하고 처리하고 존재하지 않는 모듈에서 실패하여 문제를 해결합니다.
import () {
ARGS=$@
ARGS=$(python3 -c "import re;print(', '.join(re.findall(r'([\w]+)[\s|,]*', '$ARGS')))")
echo -ne '\0x04' | python3 -i
python3 -c "import $ARGS" &> /dev/null
if [ $? != 0 ]; then
echo "sorry, junk module in list"
else
echo "imported $ARGS"
python3 -i -c "import $ARGS"
fi
}
스트림에서 설명 할 수없는 EOF 문제를 해결하지만 파이썬이 EOF가 있다고 생각하는 이유를 이해하고 싶습니다.