ফর্ম্যাট যা শেল ইনপুট হিসাবে পুনরায় ব্যবহার করা যেতে পারে
এই জাতীয় অনুরোধের জন্য একটি বিশেষ 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