मैं थोड़ी देर के लिए शेबैंग #!
का उपयोग कर रहा हूं और आज मुझे उपयोग करने वाले मामले में आया है जो मुझे भ्रमित करता है।शेबांग "#!" शुरू होता है और "! #" समाप्त होता है?
वहाँ
#!/usr/bin/env scala
println("hello world")
हालांकि तरह स्केला स्क्रिप्ट चलाने के लिए कई तरीके हैं, मैं कुटिया के इस संस्करण में आए
#!/bin/sh
exec scala "$0" "[email protected]"
!#
println("hello world")
लग रहा है इस समाधान मूल रूप से पहले पार्टी का आह्वान तरह, रन exec scala "$0" "[email protected]"
जहां $0
वर्तमान फ़ाइल नाम को इंगित करता है और [email protected]
एक स्थितित्मक सरणी में इनपुट तर्क है।
मेरा प्रश्न है कि सब कुछ #!
और !#
के बीच पार्टी में क्रियान्वित किया जा सकता है,
#!/bin/sh
exec scala "$0" "[email protected]"
echo "oh Yeah"
!#
println("hello world")
यह पता त्रुटि नहीं था लेकिन न तो "ओह, हाँ" stdout में, किसी को समझा सकता है मुझे दिया है क्या मतलब है मैं यहाँ क्या चल रहा हूँ?
अद्यतन: !#
साकार करने के बाद एक स्केला बात है, मैं स्केला के स्रोत कोड डाउनलोड किया है और महसूस किया कि यह केवल लेक्स चम्मच द्वारा लिखित ScriptRunner.scala भाग की टिप्पणी में दिखाई देता है।
'exec' नई प्रक्रिया के साथ वर्तमान प्रक्रिया को प्रतिस्थापित करता है। इसे चलाने के बाद कुछ भी नहीं। –
@EtanReisner, तो इस मामले में नया दुभाषिया (स्केल दुभाषिया) कैसे जानता है कि इसे 'println()' से शुरू होना चाहिए और 'echo'' से शुरू नहीं होना चाहिए, जहां '! # 'का उपयोग किया जाता है? –
दूसरे शब्दों में, यदि आप 'exec' से पहले रखे तो 'echo' दिखाई देने में सक्षम हो सकते हैं।पर्ल कुछ '[perldoc perlrun'] (http://perldoc.perl.org/perlrun.html) में कुछ संबंधित नोटेशन दस्तावेज करता है। –