“ STR: ไม่พบคำสั่ง” ในขณะที่กำหนดค่าให้กับตัวแปร


9

ฉันป้อนบรรทัดต่อไปนี้ลงในเชลล์สคริปต์ชื่อ“ test.sh”:

#!/bin/bash
echo Hello World
STR=”Hello Again
echo $STR

หลังจาก chmod ./test.shเพื่อปฏิบัติการฉันวิ่งสคริปต์ด้วย อย่างไรก็ตามฉันได้รับข้อความ

./test.sh: line 3  STR: Command not found

ผมทำอะไรผิดหรือเปล่า?


1
คำตอบของ terdon ตอบคำถามของคุณหรือไม่? ถ้าไม่ใช่อาจเป็นเพราะคุณมีช่องว่างรอบ ๆ การมอบหมายตัวแปร
59

@Voker เป็นเพียงความคิดเห็นของโวหารตามคำแนะนำของฉัน : ฉันคิดว่ามันเป็นการดีที่สุดที่จะใช้ Blockquote สำหรับข้อความแสดงข้อผิดพลาดแทน Code block; ในตอนท้ายนี่ไม่ใช่รหัส แต่มีข้อความบางข้อความที่ล่าม Bash กำลังกลับมา
fedorqui

@fedorqui ทำไม บล็อกอ้างไม่รักษารูปแบบที่พวกเขาตีความตัวอักษรพิเศษ (เช่น*, _, #) เป็น markdown และมีการแสดงผลที่แตกต่างจากซอฟแวร์โปรแกรมอ่านหน้าจอ ฉันคิดว่าสิ่งใดก็ตามที่คอมพิวเตอร์ให้หรือรับควรเป็นรหัสบล็อก คุณไม่มีทางรู้ว่ารูปแบบที่แน่นอนสามารถมีความเกี่ยวข้อง โดยเฉพาะอย่างยิ่งเมื่อต้องรับมือกับสิ่งต่าง ๆ เช่นนี้ที่ยูนิโค้ดเข้ามาเล่น
terdon

@terdon จริงๆมันขึ้นอยู่กับกรณีและมีแม้กระทั่งขอให้เพิ่มรูปแบบบันทึก / คำเตือน / ข้อผิดพลาดซึ่งจะช่วยให้คำห่อและเก็บรักษาการขึ้นบรรทัดใหม่ สำหรับฉันถ้ามันเป็นแค่บรรทัดในกรณีนี้ฉันชอบบล็อกคำพูดเพราะมันทำให้ง่ายต่อการเข้าใจว่าโค้ดคืออะไรและอะไรคือข้อผิดพลาด
fedorqui

@fedorqui ฉันเดาว่าเราควรจะนำไปใช้กับ meta แต่ฉันชอบตัวอักษรที่มีความกว้างคงที่และการสร้างรูปแบบที่แน่นอนทุกครั้งที่โพสต์ข้อความที่อ่านหรือสร้างโดยคอมพิวเตอร์
terdon

คำตอบ:


20

คุณใช้อะไรในการสร้างสคริปต์นั้น อักขระเครื่องหมายคำพูดที่คุณมีในคำถามนั้นไม่ถูกต้อง พวกเขากำลังราคาคู่ไม่ปกติ ( ") แต่ คำพูดปกติคือ:

$ uniprops '"' | head -1
U+0022 "› \N{QUOTATION MARK}

ในขณะที่คุณเป็น:

$ uniprops '”' | head -1
U+201D ‹”› \N{RIGHT DOUBLE QUOTATION MARK}

ดังนั้นเพียงใช้คำพูดปกติและคุณจะไม่เป็นไร:

#!/bin/bash
echo Hello World
STR="Hello Again"
echo "$STR" ## Get into the habit of ALWAYS quoting your variables as well

ขอบคุณสำหรับคำตอบ Terdon เครื่องหมายคำพูดคู่ในไฟล์ถูกต้องโพสต์มาจากอีเมล
Jay Silver

1
unipropsดูเท่ ฉันพบหน้า (นั่นคือ tchrist ของเราเองหรือ) ฉันต้องดาวน์โหลดมันจากแหล่งที่มาหรือไม่หรือมีให้ในแพ็คเกจผู้จัดการที่ไหนสักแห่ง? E: Unable to locate package uniprops
TRiG

1
ฉันไม่ได้ใช้ Perl มาก (แทบจะทั้งหมด) ฉันแค่อยากรู้มากกว่าขั้นต่ำเกี่ยวกับ Unicode
TRiG

1
@TRiG เป็นอย่างดีใน Ubuntu มันเป็นเรื่องง่ายเหมือนsudo apt-get install cpanminus; sudo cpanm Unicode::Tussleแล้วคุณก็มีunipropsคำสั่ง แน่นอน tchrist เขียนสิ่งที่แช่งดังนั้นคุณอาจรวมทั้งขอให้เขาในการแชท :)
terdon

1
ฉันเสียใจในเรื่องไร้สาระเช่นนี้ตลอดเวลา ระบบวิกิเฉพาะที่นายจ้างของฉันดูเหมือนจะมีนิสัยน่ารังเกียจในการแปลยัติภังค์ - ลบ-U + 002D ไปเป็นยัติภังค์U + 2010 ( หรือคล้ายกัน ) จากนั้นสิ่งต่าง ๆ เช่นuname ‐aหยุดทำงาน: - / ไคลเอนต์อีเมลมักจะมีนิสัยที่ไม่เหมาะสมเหมือนกันโดยเฉพาะเมื่อใช้การจัดรูปแบบ HTML - อีกเหตุผลที่ดีที่ต้องการอีเมลแบบข้อความธรรมดา
Digital Trauma
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.