ฉันพยายามเรียกใช้สคริปต์ระยะไกลด้วย SSH และสคริปต์นี้เปลี่ยนพฤติกรรมของมันขึ้นอยู่กับว่าอาร์กิวเมนต์ที่ระบุนั้นว่างเปล่าหรือไม่ นี่คือตัวอย่างเล็กน้อยที่ฉันสร้างtmp.sh
ไฟล์อย่างง่ายที่สะท้อนจำนวนข้อโต้แย้งแล้วข้อโต้แย้งคืออะไร เมื่อฉันรันมันแบบโลคัลมันทำงานได้ตามที่คาดไว้โดยมีอาร์กิวเมนต์ 3 ข้อ แต่เมื่อฉันรันสคริปต์ผ่าน SSH มันบอกว่ามันมีเพียง 2 ข้อโต้แย้ง:
$ cat argtest.sh
#!/bin/bash
echo $#
echo $@
$ ./argtest.sh foo '' bar
3
foo bar
$ ssh user@localhost ./argtest.sh foo '' bar
2
foo bar
มีวิธีที่จะให้ SSH ส่งต่ออาร์กิวเมนต์ที่ว่างเปล่าดังนั้นสคริปต์บอกว่ามันมี 3 ข้อโต้แย้ง?