กำลังพยายามเรียกใช้ฟังก์ชันทุบตี แต่พบข้อผิดพลาดทางไวยากรณ์: "(" ไม่คาดคิดฉันได้ลองลบวงเล็บวงเล็บ ฯลฯ ฯลฯ ... ดูเหมือนว่าจะไม่มีอะไรทำงาน
$ bash --version
GNU bash, version 4.3.46(1) release
#!/bin/bash
function hello () {
echo "Hello world"
}
กำลังพยายามเรียกใช้ฟังก์ชันทุบตี แต่พบข้อผิดพลาดทางไวยากรณ์: "(" ไม่คาดคิดฉันได้ลองลบวงเล็บวงเล็บ ฯลฯ ฯลฯ ... ดูเหมือนว่าจะไม่มีอะไรทำงาน
$ bash --version
GNU bash, version 4.3.46(1) release
#!/bin/bash
function hello () {
echo "Hello world"
}
คำตอบ:
หากคุณใช้งานสคริปต์sh hello.sh
เชลล์การตีความจะไม่เป็นที่กล่าวถึงในบรรทัด Shebang แต่/bin/sh
จะถูกใช้ ในกรณีของ Debian และ Ubuntu dash
โดยค่าเริ่มต้นนี้จะเป็น
ดังนั้นในการรันสคริปต์ของคุณอย่างถูกต้องด้วย a bash
ให้ใช้วิธีใดวิธีหนึ่งต่อไปนี้
/bin/bash hello.sh
หรือ
chmod +x hello.sh
./hello.sh
หรือคุณยังสามารถตั้งค่าเป็นbash
/bin/sh
dpkg-reconfigure dash
ครั้งแรก:
ข้อผิดพลาดทางไวยากรณ์เป็นเพราะ () ลบ () จากไฟล์เช่นนี้:
#!/bin/bash
function hello {
echo "Hello world"
}
หรือคุณสามารถเรียกใช้คำสั่งต่อไปนี้เพื่อแก้ไขไฟล์สำหรับคุณ:
sed -i 's/() //g' hello.sh
ตอนนี้คุณควรจะสามารถเรียกใช้ไฟล์ด้วยผลลัพธ์ที่ต้องการ
อีกทางหนึ่ง :
คุณสามารถเพิ่มบรรทัด 2, 3 และ 4 ใน~/.bashrc
ไฟล์ของคุณ
function hello () {
echo "Hello world"
}
จำไว้ว่าอย่าใช้sudo
เพื่อแก้ไข~/.bashrc
ไฟล์ของคุณ!
หลังจากคุณเพิ่มบรรทัดลงในไฟล์แล้วให้รันคำสั่งต่อไปนี้เพื่อรีสตาร์ท bash หรือ "source" ไฟล์. bashrc ของคุณ:
. ~/.bashrc
ตอนนี้คุณควรจะสามารถเรียกใช้ comand hello
และ "Hello world" ควรพิมพ์ในเครื่อง
นอกจากนี้:
คุณสามารถแก้ไขไฟล์เพื่อพูดสิ่งนี้แทน:
#!/bin/bash
echo "Hello world"
และตั้งชื่อไฟล์hello
และบันทึกไฟล์/usr/local/bin
ไว้
หลังจากทำทั้งหมดให้สร้างไฟล์ที่เรียกใช้งานได้โดยใช้คำสั่งต่อไปนี้:
sudo chmod +x /usr/local/bin/hello
ตอนนี้คุณควรจะสามารถเรียกใช้ comand hello
และ "Hello world" ควรพิมพ์ในเครื่อง
สุดท้าย:
ตัวเลือกที่สามคือการเพิ่มบรรทัดต่อไปนี้ใน~/.bashrc
ไฟล์ของคุณ:
alias hello='echo "Hello world"'
จากนั้นให้จัดหาไฟล์. bashrc ของคุณโดยใช้คำสั่งต่อไปนี้:
. ~/.bashrc
GNU Bash เป็นเชลล์ที่ใช้โดยค่าเริ่มต้นในเทอร์มินัลบน Ubuntu อย่างไรก็ตามเมื่อสคริปต์ถูกเรียกใช้งานในการบูตระบบระบบจะใช้เครื่องหมายขีดกลางเนื่องจากเป็นเส้นประที่มี / bin / sh
จะไม่ทำงาน ->
$ sh hello.sh
จะทำงาน ->
$./hello.sh
แก้ไขปัญหา
ตามสคริปต์ของคุณ:
#!/bin/bash
function hello () {
echo "Hello world"
}
#call this function as follow:
hello # Syntax Correct
hello() # Syntax Error