3
$ {1 +“ $ @”} หมายถึงอะไรในเชลล์สคริปต์และมันแตกต่างจาก“ $ @” อย่างไร
ในเอกสารประกอบ Perl, perlrun (1)แนะนำการเรียกใช้สคริปต์ Perl โดยใช้ส่วนหัวของสองภาษาเชลล์ / Perl: #!/bin/sh #! -*-perl-*- eval 'exec perl -x -wS $0 ${1+"$@"}' if 0; อะไร${1+"$@"}หมายถึง? ฉันลองใช้"$@"แทน (โดยใช้ Bash เป็น / bin / sh) และดูเหมือนว่าจะใช้งานได้เช่นกัน แก้ไข ${1:+"$@"}สองคำตอบด้านล่างบอกว่ามันควรจะเป็น ฉันรับรู้ถึง${parameter:+word}ไวยากรณ์ ("ใช้ค่าทางเลือก") ที่ระบุไว้ใน bash (1) อย่างไรก็ตามฉันไม่มั่นใจเพราะ ทั้งสองอย่าง${1+"$@"}และใช้"$@"งานได้ดีแม้ว่าจะไม่มีพารามิเตอร์ก็ตาม ถ้าฉันสร้าง simple.sh เป็น #!/bin/sh eval 'exec /usr/bin/perl -x -S -- $0 …