ฉันจะรับส่วนแบ่ง$@
ใน Bash โดยไม่ต้องคัดลอกพารามิเตอร์ตำแหน่งทั้งหมดไปยังอาร์เรย์อื่นเช่นนี้ได้อย่างไร
argv=( "$@" )
echo "${argv[@]:2}";
ฉันจะรับส่วนแบ่ง$@
ใน Bash โดยไม่ต้องคัดลอกพารามิเตอร์ตำแหน่งทั้งหมดไปยังอาร์เรย์อื่นเช่นนี้ได้อย่างไร
argv=( "$@" )
echo "${argv[@]:2}";
คำตอบ:
คุณสามารถใช้รูปแบบเดียวกันกับอาเรย์อื่น ๆ ในการแยกองค์ประกอบที่ 2 และ 3 จาก$@
คุณต้องทำ:
echo "${@:1:2}"
- -
| |----> slice length
|------> slice starting index
"${@:1:2}"
จริงให้ฉันที่ 1และครั้งที่ 2 อาร์กิวเมนต์บรรทัดคำสั่ง ในขณะเดียวกัน"${@:1}"
ให้ฉันอาร์กิวเมนต์บรรทัดคำสั่งเต็มรูปแบบและ"${@:0}"
ให้ฉันชื่อสคริปต์ตามด้วยอาร์กิวเมนต์บรรทัดคำสั่งเต็มรูปแบบ
$@
อาร์เรย์เป็นอาร์กิวเมนต์ที่ 1 และ 2 "${@:1}"
จะพิมพ์ทั้งอาร์เรย์เริ่มต้นด้วยองค์ประกอบที่ 2 (อาร์กิวเมนต์ที่ 1) และ${@:0}
อาร์เรย์ทั้งหมดที่เริ่มต้นจากองค์ประกอบที่ 1 ซึ่งเป็นชื่อของสคริปต์ คุณคาดหวังอะไร
"$@"
อ้างเสมอ การargv
มอบหมายของคุณจะผิดพลาดหากมีสิ่งใดที่มีช่องว่าง