ฉันมีเซิร์ฟเวอร์ Linux (Debian) สองตัว ฉันกำลังสร้างเชลล์สคริปต์
ในครั้งแรกที่ฉันสร้างอาร์เรย์ดังนี้:
#!/bin/bash
target_array=(
"/home/user/direct/filename -p123 -r"
)
มันใช้งานได้ดี แต่เมื่อฉันเรียกใช้บนเซิร์ฟเวอร์อื่นฉันจะได้รับ:
Syntax error: "(" unexpected
เท่าที่ฉันสามารถบอกได้ว่าเซิร์ฟเวอร์ทั้งสองนั้นเหมือนกัน มีใครบ้างไหมที่จะเข้าใจว่าทำไมสิ่งนี้ถึงไม่ได้ผล?
ถ้าฉันพิมพ์ลงในเทอร์มินัลโดยตรงก็ดี
มันจะปรากฏว่าเมื่อฉันเรียกใช้เป็น
sh scriptname.sh
ฉันได้รับข้อผิดพลาด แต่ถ้าฉันเรียกใช้เป็น
./scriptname.sh
ดูเหมือนว่าจะโอเค ความแตกต่างคืออะไร?
sh
ไม่เป็นbash
เช่นนั้นและทำงานอย่างsh scriptname.sh
ผิดปกติ
cat -v <script>
จะดูว่ามีถ่านเก๊