আমি একটি স্প্রিটজ অ্যাপ তৈরির চেষ্টা করছি। সবকিছু ঠিকঠাক কাজ করছিল, তবে গতকাল থেকে আমি এই ত্রুটিটি পেতে থাকি:
./spritz: লাইন 176: সিনট্যাক্স ত্রুটি: ফাইলের অপ্রত্যাশিত শেষ
আমি স্ক্রিপ্ট ফাইলটি চেক করেছি এবং সবকিছু নিখুঁত বলে মনে হচ্ছে। আমি বিভ্রান্ত হয়ে পড়েছি, শেষ পর্যন্ত আমার কাছে একটি বিবৃতি আছে এবং এটি সঠিক দেখাচ্ছে! শেষ অংশটি এখানে:
#checks if speed is 150
157 if [[ $2 -eq 150 ]];
158 then
159 starttime=$SECONDS
160 FS=$'\n'
161 for j in `grep --color=always -iP '\b[^aeiou\s]*[aeiou][^aeiou\s]*\K[aeiou]' $1`;
162 do
163 #Reads the text file in the centre of the screen
164 echo " ___________________"
165 echo " $j";
166 echo " ___________________"
167 echo " Speed 150 wpm"
168 sleep 0.9;
169 clear;
170 done
171 endtime=$(($SECONDS - $starttime))
172 echo "You read $words_read words in $endtime seconds!"
173 exit 8
174 fi
কী কারণে এই ত্রুটি হতে পারে?
"$1"
, "$2"
, "$SECONDS"
, এবং "$starttime"
। (3) সঠিকভাবে ইনডেন্ট করা কোডটি পড়া এবং ডিবাগ করা সহজ। (4) আপনি সেট করছেন FS
এবং তারপরে এটি ব্যবহার করছেন না কেন ? (5) `…`
লেখা যেতে পারে $(…)
। (6) $(($SECONDS - $starttime))
সমানভাবে লেখা যেতে পারে $((SECONDS - starttime))
। আবার এটি মূলত শৈলীর একটি বিষয়। ()) আপনি "$words_read"
যখন লুপটিতে পরিবর্তন করছেন না কেন আপনি লুপটিতে মুদ্রণ করছেন?
`grep …`
মানগুলির একটি তালিকা দিয়ে প্রতিস্থাপনের চেষ্টা করুন । অন্য কথায়, নির্মূল প্রক্রিয়াটি ব্যবহার করুন।
"$1"
কোডটিতে ) কেবল উদ্ধৃতি প্রয়োজন, (বিজ্ঞাপন 4) সম্ভবত তার অর্থ IFS
(এবং নয় FS
)?
;
লাইনের শেষে আপনার যখন অপরিবর্তিত (অর্ধিকোলন) দরকার তখন এমন কোনও পরিস্থিতিতে আমি জানি না । আপনি সেমিকোলনগুলি 157, 161, 165, 168 এবং 169 লাইনের শেষে মুছে ফেলতে পারেন ((বা আপনি এগুলিকে রেখে যেতে পারেন; আমার ধারণা এটি শৈলীর একটি প্রশ্ন)) ... (চালিত)