ফর্ম্যাট যা শেল ইনপুট হিসাবে পুনরায় ব্যবহার করা যেতে পারে
এই জাতীয় অনুরোধের জন্য একটি বিশেষ printf ফর্ম্যাট নির্দেশিকা ( %q) নির্মিত হয়েছে:
printf [-v var] ফর্ম্যাট [যুক্তি]
%q causes printf to output the corresponding argument
in a format that can be reused as shell input.
কিছু নমুনা:
read foo
Hello world
printf "%q\n" "$foo"
Hello\ world
printf "%q\n" $'Hello world!\n'
$'Hello world!\n'
এটি ভেরিয়েবলের মাধ্যমেও ব্যবহার করা যেতে পারে:
printf -v var "%q" "$foo
"
echo "$var"
$'Hello world\n'
সমস্ত (128) এস্কি বাইট সহ দ্রুত চেক করুন:
মনে রাখবেন যে 128 থেকে 255 এর সমস্ত বাইটগুলি এড়িয়ে যেতে হবে।
for i in {0..127} ;do
printf -v var \\%o $i
printf -v var $var
printf -v res "%q" "$var"
esc=E
[ "$var" = "$res" ] && esc=-
printf "%02X %s %-7s\n" $i $esc "$res"
done |
column
এটি অবশ্যই এর মতো কিছু রেন্ডার করবে:
00 E '' 1A E $'\032' 34 - 4 4E - N 68 - h
01 E $'\001' 1B E $'\E' 35 - 5 4F - O 69 - i
02 E $'\002' 1C E $'\034' 36 - 6 50 - P 6A - j
03 E $'\003' 1D E $'\035' 37 - 7 51 - Q 6B - k
04 E $'\004' 1E E $'\036' 38 - 8 52 - R 6C - l
05 E $'\005' 1F E $'\037' 39 - 9 53 - S 6D - m
06 E $'\006' 20 E \ 3A - : 54 - T 6E - n
07 E $'\a' 21 E \! 3B E \; 55 - U 6F - o
08 E $'\b' 22 E \" 3C E \< 56 - V 70 - p
09 E $'\t' 23 E \# 3D - = 57 - W 71 - q
0A E $'\n' 24 E \$ 3E E \> 58 - X 72 - r
0B E $'\v' 25 - % 3F E \? 59 - Y 73 - s
0C E $'\f' 26 E \& 40 - @ 5A - Z 74 - t
0D E $'\r' 27 E \' 41 - A 5B E \[ 75 - u
0E E $'\016' 28 E \( 42 - B 5C E \\ 76 - v
0F E $'\017' 29 E \) 43 - C 5D E \] 77 - w
10 E $'\020' 2A E \* 44 - D 5E E \^ 78 - x
11 E $'\021' 2B - + 45 - E 5F - _ 79 - y
12 E $'\022' 2C E \, 46 - F 60 E \` 7A - z
13 E $'\023' 2D - - 47 - G 61 - a 7B E \{
14 E $'\024' 2E - . 48 - H 62 - b 7C E \|
15 E $'\025' 2F - / 49 - I 63 - c 7D E \}
16 E $'\026' 30 - 0 4A - J 64 - d 7E E \~
17 E $'\027' 31 - 1 4B - K 65 - e 7F E $'\177'
18 E $'\030' 32 - 2 4C - L 66 - f
19 E $'\031' 33 - 3 4D - M 67 - g
যেখানে প্রথম ক্ষেত্রটি হ'ল বাইটের মান, সেখানে দ্বিতীয় Eঅক্ষরটি যদি পালাতে হয় এবং তৃতীয় ক্ষেত্রের চরিত্রের উপস্থাপনা থেকে বাঁচতে হয় contain
কেন ,?
আপনি কিছু অক্ষর আছে যা না দেখতে পারে সবসময় , পলান করা মত প্রয়োজন ,, }এবং {।
তাই সবসময় না তবে কিছু সময় :
echo test 1, 2, 3 and 4,5.
test 1, 2, 3 and 4,5.
অথবা
echo test { 1, 2, 3 }
test { 1, 2, 3 }
তবে যত্ন:
echo test{1,2,3}
test1 test2 test3
echo test\ {1,2,3}
test 1 test 2 test 3
echo test\ {\ 1,\ 2,\ 3\ }
test 1 test 2 test 3
echo test\ {\ 1\,\ 2,\ 3\ }
test 1, 2 test 3