পার্ল ডকুমেন্টেশনে, পার্লরুন (1) দ্বিভাষিক শেল / পার্ল শিরোনাম ব্যবহার করে পার্ল স্ক্রিপ্টগুলি চালু করার পরামর্শ দেয়:
#!/bin/sh
#! -*-perl-*-
eval 'exec perl -x -wS $0 ${1+"$@"}'
if 0;
কী ${1+"$@"}
মানে? আমি "$@"
পরিবর্তে (বাশকে / বিন / শ হিসাবে ব্যবহার করে) ব্যবহার করার চেষ্টা করেছি এবং এটি ঠিক তেমন কাজ করে বলে মনে হচ্ছে।
সম্পাদন করা
নীচে দুটি উত্তর বলে যে এটি হওয়ার কথা ${1:+"$@"}
। আমি ${parameter:+word}
ব্যাশ (1) এ নথিভুক্ত ("বিকল্প মান ব্যবহার করুন") সিনট্যাক্স সম্পর্কে সচেতন । যাইহোক, আমি অপ্রকাশিত, কারণ
উভয়
${1+"$@"}
এবং"$@"
ঠিক সূক্ষ্মভাবে কাজ করে, এমনকি কোনও প্যারামিটার না থাকলেও। যদি আমি সরল.শ তৈরি করি#!/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}
? কেউ কি এই হাইপোথিসিস নিশ্চিত করতে পারে?