আমার একটি দ্রুত প্রশ্ন আছে।
এটি কি স্বাভাবিক যে বাশ (আমি ৪.৪.১১ ব্যবহার করছি) লাইন / পাঠ্য প্রদর্শন করছে না যা পৃথক করা হয়েছে / সমতল দিয়ে শেষ হবে\r
?
আমি এই আচরণটি দেখে কিছুটা অবাক হয়েছিলাম:
$ a=$(printf "hello\ragain\rgeorge\r\n")
$ echo "$a"
george
তবে "হ্যালো আবার" পাঠ্যটি এখনও রয়েছে, কোনওভাবে "লুকানো":
$ echo "$a" |od -w32 -t x1c
0000000 68 65 6c 6c 6f 0d 61 67 61 69 6e 0d 67 65 6f 72 67 65 0d 0a
h e l l o \r a g a i n \r g e o r g e \r \n
এবং যতক্ষণ না আমরা কেবল বাশ নিয়ে খেলি ঠিক আছে .... তবে এটি কি সম্ভাব্য সুরক্ষার ঝুঁকি? "অ" ভেরিয়েবলের বিষয়বস্তু যদি বাহ্যিক জগত থেকে আসে এবং কেবলমাত্র হ্যালো পরিবর্তে "খারাপ আদেশগুলি" অন্তর্ভুক্ত করে তবে কী হবে?
আরেকটি পরীক্ষা, এবার কিছুটা অনিরাপদ:
$ a=$(printf "ls;\rGeorge\n")
$ echo "$a"
George
$ eval "$a"
0 awkprof.out event-tester.log helloworld.c oneshot.sh rightclick-tester.py tmp uinput-simple.py
<directory listing appears with an error message at the end for command George>
কোনও আড়ালের rm
পরিবর্তে একটি লুকানো কল্পনা করুন ls
।
প্রতিধ্বনি -e ব্যবহার করার সময় একই আচরণ:
$ a=$(echo -e "ls;\rGeorge\r\n"); echo "$a"
George
আমি কি কিছু ভুল করি ...?