पर्ल दस्तावेज़ीकरण में, perlrun (1) एक द्विभाषी शेल / पर्ल हेडर का उपयोग करके पर्ल स्क्रिप्ट लॉन्च करने का सुझाव देता है:
#!/bin/sh
#! -*-perl-*-
eval 'exec perl -x -wS $0 ${1+"$@"}'
if 0;
क्या ${1+"$@"}
मतलब है? मैंने "$@"
इसके बजाय (बश के रूप में / बिन / श का उपयोग करके) का उपयोग करने की कोशिश की , और यह भी काम करता है।
संपादित करें
नीचे दिए गए दो उत्तर कहते हैं कि यह माना जाता है ${1:+"$@"}
। मैं ${parameter:+word}
बैश (1) में प्रलेखित ("यूज़ अल्टरनेटिव वैल्यू") सिंटेक्स से अवगत हूँ । हालांकि, मैं असंबद्ध हूं, क्योंकि
दोनों
${1+"$@"}
और"$@"
ठीक काम करते हैं, भले ही कोई पैरामीटर न हो। अगर मैं simple.sh बनाऊं#!/bin/sh eval 'exec /usr/bin/perl -x -S -- $0 "$@"' if 0; #!perl use Data::Dumper; print Dumper(\@ARGV);
और सवाल
#!/bin/sh eval 'exec /usr/bin/perl -x -S -- $0 ${1+"$@"}' if 0; #!perl use Data::Dumper; print Dumper(\@ARGV);
मैं दोनों को पहचान के साथ काम कर सकता हूं:
$ ./question.sh $VAR1 = []; $ ./question.sh a $VAR1 = [ 'a' ]; $ ./question.sh a 'b c' $VAR1 = [ 'a', 'b c' ]; $ ./question.sh "" $VAR1 = [ '' ]; $ ./simple.sh $VAR1 = []; $ ./simple.sh a $VAR1 = [ 'a' ]; $ ./simple.sh a 'b c' $VAR1 = [ 'a', 'b c' ]; $ ./simple.sh "" $VAR1 = [ '' ];
इंटरनेट पर अन्य स्रोत भी उपयोग करते हैं
${1+"$@"}
, जिसमें एक हैकर भी शामिल है जो यह जानता है कि वह क्या कर रहा है।
शायद ${parameter+word}
एक अनिर्दिष्ट वैकल्पिक (या पदावनत) वाक्यविन्यास है ${parameter:+word}
? क्या कोई उस परिकल्पना की पुष्टि कर सकता है?