আমি এমন কিছু বাশ ফাংশন লিখতে চেয়েছিলাম যাতে আমি বাশ বলতে পারি, import os
বাfrom sys import stdout
এটি আমদানিকৃত মডিউলটির সাথে একটি নতুন পাইথন ইন্টারপ্রেটার স্প্যান করবে।
পরবর্তী 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
সেখানে কোনও ইওএফ নেই, তবুও পাইথন ইন্টারপ্রেটার এমন আচরণ করছে যেন এটি ইওএফ পড়ে। স্ট্রিমের শেষে একটি নতুন লাইন রয়েছে, যা প্রত্যাশিত।
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
}
এটি স্ট্রিমের একটি অব্যক্ত ইওএফের সমস্যার সমাধান করে তবে পাইথন কেন ইওএফ আছে বলে মনে করে তা আমি বুঝতে চাই।