जब मैं अपने डेस्कटॉप पर विंडोज से लिनक्स में चला गया, तो मेरे पास बहुत पहले से मौजूद था .BAT तथा .CMD कन्वर्ट करने के लिए फ़ाइलें और मैं उनके लिए तर्क को फिर से लिखने के लिए नहीं जा रहा था, इसलिए मैं मिल गया गोट बाश करने का एक तरीका जो काम करता है क्योंकि गोटो फ़ंक्शन चलता है sed स्क्रिप्ट के किसी भी भाग को हटाने के लिए स्वयं पर, जो चलाया नहीं जाना चाहिए, और फिर यह सब निकाल देता है:
#!/bin/bash
# BAT / CMD goto function
function goto
{
label=$1
cmd=$(sed -n "/^:[[:blank:]][[:blank:]]*${label}/{:a;n;p;ba};" $0 |
grep -v ':$')
eval "$cmd"
exit
}
apt update
# Just for the heck of it: how to create a variable where to jump to:
start=${1:-"start"}
goto "$start"
: start
goto_msg="Starting..."
echo $goto_msg
# Just jump to the label:
goto "continue"
: skipped
goto_msg="This is skipped!"
echo $goto_msg
: continue
goto_msg="Ended..."
echo "$goto_msg"
# following doesn't jump to apt update whereas original does
goto update
और मुझे ऐसा बिल्कुल भी नहीं लगता है कि लिनुस टॉर्वाल्ड्स ने प्रसिद्ध रूप से कहा:
से: लिनुस टोरवाल्ड्स
विषय: रे: २.६.०-परीक्षण का कोई मौका *?
दिनांक: सूर्य, १२ जनवरी २००३ 11:38:35 -0800 (PST)
मुझे लगता है कि गोटो ठीक हैं, और वे अक्सर बड़ी मात्रा में इंडेंटेशन की तुलना में अधिक पठनीय होते हैं। ऐसा इसलिए है ख़ास तौर पर सच है अगर कोड प्रवाह वास्तव में स्वाभाविक रूप से इंडेंट नहीं है (इस मामले में यह है, तो मुझे नहीं लगता कि गोटो का उपयोग करना किसी भी तरह से है साफ से अधिक नहीं, लेकिन सामान्य रूप से गोटो की पठनीयता के लिए काफी अच्छा हो सकता है)।
बेशक, पास्कल जैसी बेवकूफ भाषाओं में, जहां लेबल वर्णनात्मक नहीं हो सकते हैं, गोटो का बुरा हो सकता है। लेकिन यह गोटो की गलती नहीं है, यह भाषा डिजाइनर की बृहतता है।
कोड के लिए स्रोत (इसे कम त्रुटि वाला बनाने के लिए संशोधित किया गया है)
उद्धरण के लिए स्रोत
while $a==0और $ a को 1 में बदल दें जब एक और_शैली को सही ढंग से पढ़ा गया हो।