คำถามติดแท็ก quoting

โดยทั่วไปแล้วสตริงจะถูกคั่นด้วยเครื่องหมายคำพูดซึ่งทำให้เกิดปัญหาในการจัดการกับสตริงที่มีเครื่องหมายคำพูด

8
อะไรคือความแตกต่างระหว่าง $ * และ $ @
พิจารณารหัสต่อไปนี้: foo () { echo $* } bar () { echo $@ } foo 1 2 3 4 bar 1 2 3 4 มันเอาท์พุท: 1 2 3 4 1 2 3 4 ฉันใช้ Ksh88 แต่ฉันสนใจเชลล์ทั่วไปอื่น ๆ ด้วย หากคุณทราบถึงความพิเศษใด ๆ ของเชลล์ที่เฉพาะเจาะจงโปรดอย่าพูดถึงมัน ฉันพบ follwing ในหน้าคน Ksh บน Solaris: ความหมายของ $ * และ …
72 shell  quoting  ksh  arguments 

4
ฉันจะสะท้อนสัญญาณดอลลาร์ได้อย่างไร
ตัวอย่างเช่น$PATHและ$HOME เมื่อฉันพิมพ์echo $PATHมันจะส่งกลับของฉัน$PATHแต่ฉันต้องการที่จะสะท้อนคำ$PATHและไม่ใช่สิ่งที่ตัวแปรจริงหมายถึงecho "$PATH"ไม่ได้ทำงานอย่างใดอย่างหนึ่ง
67 shell  quoting 

5
วิธีการหลีกเลี่ยงคำพูดในเปลือก?
ฉันมีปัญหากับการหลบหนีตัวละครในทุบตี ฉันต้องการหลีกเลี่ยงคำพูดเดี่ยวและคู่ในขณะที่รันคำสั่งภายใต้ผู้ใช้อื่น สำหรับวัตถุประสงค์ของคำถามนี้สมมติว่าฉันต้องการที่จะสะท้อนต่อไปนี้บนหน้าจอ: 'single quote phrase' "double quote phrase" ฉันจะหลีกเลี่ยงตัวอักษรพิเศษทั้งหมดได้อย่างไรหากฉันต้องเปลี่ยนไปใช้ผู้ใช้อื่น: sudo su USER -c "echo \"'single quote phrase' \"double quote phrase\"\"" แน่นอนว่านี่ไม่ได้ผลลัพธ์ที่ถูกต้อง


6
เครื่องหมายวงเล็บในคณิตศาสตร์ expr: 3 * (2 + 1)
expr ดูเหมือนจะไม่ชอบวงเล็บ (ใช้ในคณิตศาสตร์เพื่อจัดลำดับความสำคัญผู้ประกอบการที่ชัดเจน): expr 3 * (2 + 1) bash: syntax error near unexpected token `(' วิธีแสดงโอเปอเรเตอร์ที่สำคัญในการทุบตี?

5
วิธีการเรียกใช้คำสั่งที่เกี่ยวข้องกับการเปลี่ยนเส้นทางหรือท่อด้วย sudo?
ฉันกำลังพยายามติดตามสิ่งที่ฉันถือว่าเป็นแนวทางปฏิบัติที่ดีที่สุดในการใช้ sudo แทนบัญชีรูท ฉันกำลังใช้งานไฟล์ concat อย่างง่ายเช่น: sudo echo 'clock_hctosys="YES"' >> /etc/conf.d/hwclock สิ่งนี้ล้มเหลวทางด้านขวาของ ">>" ซึ่งกำลังทำงานในฐานะผู้ใช้ปกติ การเพิ่ม sudos พิเศษก็ล้มเหลวเช่นกัน (ลักษณะการทำงานที่คาดไว้ตั้งแต่การไพพ์ไปยังคำสั่ง sudo และไม่ไปที่ไฟล์) ตัวอย่างเป็นเพียงแค่นั้น แต่มันได้รับการตรวจสอบและทดสอบภายใต้บัญชีรูท

5
ส่งผ่านตัวแปรเชลล์เป็น / pattern / ไปยัง awk
มีดังต่อไปนี้ในหนึ่งในฟังก์ชั่นเปลือกของฉัน: function _process () { awk -v l="$line" ' BEGIN {p=0} /'"$1"'/ {p=1} END{ if(p) print l >> "outfile.txt" } ' } ดังนั้นเมื่อเรียกว่าเป็น_process $arg, $argได้รับการส่งผ่านเป็น$1และนำมาใช้เป็นรูปแบบการค้นหา มันทำงานได้ด้วยวิธีนี้เพราะเชลล์ขยาย$1แทนรูปแบบ awk! นอกจากนี้ยังlสามารถนำมาใช้ภายในโปรแกรม awk -v l="$line"ถูกประกาศด้วย ทุกอย่างดี เป็นไปได้หรือไม่ที่จะให้รูปแบบการค้นหาเป็นตัวแปร การติดตามจะไม่ทำงาน awk -v l="$line" -v search="$pattern" ' BEGIN {p=0} /search/ {p=1} END{ if(p) print l >> "outfile.txt" …
59 shell  awk  quoting  variable 

4
ฉันจะใช้คอลัมน์เพื่อกำหนดขอบเขตบนแท็บและไม่เว้นวรรคได้อย่างไร
ฉันต้องการใช้columnคำสั่งUnix เพื่อจัดรูปแบบข้อความ ฉันมีฟิลด์คั่นด้วยแท็บ แต่ในแต่ละฟิลด์ก็มีช่องว่างด้วย columndelimits บนพื้นที่สีขาว (แท็บและช่องว่าง) ฉันจะทำให้คอลัมน์ใช้แท็บเป็นตัวคั่นได้อย่างไร ฉันพยายามระบุแท็บเป็นตัวคั่นโดยใช้: cat myfile | column -t -s"\t"

1
อะไรคือความแตกต่างระหว่างเครื่องหมายคำพูด“ …”, '…', $ '…' และ $“ …”?
บางครั้งผมเห็นสคริปต์ใช้ทั้งหมดของวิธีการที่แตกต่างกันเหล่านี้อ้างข้อความบางส่วน: "...", '...', และ$'...' $"..."เหตุใดจึงมีการใช้เครื่องหมายคำพูดต่าง ๆ มากมาย? พวกเขามีพฤติกรรมที่แตกต่างหรือส่งผลกระทบต่อสิ่งที่ฉันสามารถทำได้ภายในพวกเขา?

4
echo bytes เป็นไฟล์
ฉันกำลังพยายามเชื่อมต่อ rasberry Pi ของฉันกับจอแสดงผลบางตัวโดยใช้บัส i2c ในการเริ่มต้นฉันต้องการเขียนเนื้อหาด้วยตนเองโดยเฉพาะอย่างยิ่งไบต์กับไฟล์ คุณเขียนไบต์ที่ต้องการลงไฟล์ได้อย่างไร? ฉันได้อ่านแล้วและฉันคิดว่าปัญหาของฉันควรได้รับการแก้ไขโดยสิ่งนี้ echo -n -e \x66\x6f\x6f > byteFileForNow อย่างไรก็ตามเมื่อฉันเปิดไฟล์ด้วยนาโนแทนที่จะเป็นฟูฉันเห็น: x66x6fx6f ดังนั้นแบ็กสแลชจึงหนีไปได้ แต่ไม่ใช่ไบท์เอง ฉันก็ลองแบบเดียวกันโดยไม่ใช้-eคราวนี้ฉันเลยจะได้เห็นภาพ\ x66 \ x6f \ x6fแต่กลับเหมือนเดิม ดังนั้นเสียงก้องคือการหลีกเลี่ยงแบ็กสแลช, แบ็กสแลชคนเดียวและแบ็กสแลชโดยไม่คำนึงว่าควรจะเป็นอะไร ความคิดวิธีการแก้ไขปัญหานี้? ตามหน้าคนที่ควรจะทำสิ่งที่ฉันกำลังมองหา

2
วงเล็บถูกตีความที่บรรทัดคำสั่งอย่างไร
ในขณะที่อ่านวิธีการตั้งค่าgrubฉันเจอบทความที่อ้างว่าฉันต้องใช้หนึ่งในสองไวยากรณ์ต่อไปนี้ echo \(hd0,0\) >> /boot/grub/grub.conf หรือ echo '(hd0,0)' >> /boot/grub/grub.conf เพราะที่บรรทัดคำสั่งวงเล็บจะถูกตีความในลักษณะพิเศษ มีอะไรพิเศษเกี่ยวกับวงเล็บ? พวกเขาตีความอย่างไร
45 bash  shell  quoting 

7
อะไรช่วยในการจำที่ดีสำหรับคำสั่ง shell double และ single?
ฉันเขียนสคริปต์ไม่เพียงพอที่จะจำได้โดยไม่ต้องค้นหาว่าการเสนอราคาสองครั้งหรือครั้งเดียวส่งผลให้ตัวแปร Unix ถูกแทนที่ ฉันเข้าใจว่าเกิดอะไรขึ้น คำถามของฉันคือไม่มีใครมีเคล็ดลับความจำสำหรับการสร้างกฎการอ้างอิงที่ถูกต้องในหัวของฉัน

4
วิธีพิมพ์“ $” ในเอกสารที่นี่
ฉันจะสะท้อน "$" ใน here-doc ใน bash ได้อย่างไร? $ABC=home_dirตัวอย่างเช่นผมต้องการที่จะมีไฟล์ที่มีเนื้อหาบนเซิร์ฟเวอร์ระยะไกลเช่น $ ssh hostname sudo -s <<EOF echo "$ABC=home_dir" > file EOF แต่มันก็จะถือว่าเป็นตัวแปร ฉันจะพิมพ์ตัวอักษรได้$อย่างไร
43 bash  shell  quoting 

2
จำเป็นต้องใช้เครื่องหมายคำพูดสำหรับการกำหนดตัวแปรท้องถิ่นหรือไม่?
ฉันสามารถละเว้นการเสนอราคาทางด้านขวาของการมอบหมายงานท้องถิ่นได้อย่างปลอดภัยหรือไม่? function foo { local myvar=${bar} stuff() } ฉันสนใจเป็นหลักbashแต่ข้อมูลใด ๆ ในกรณีมุมในเปลือกหอยอื่น ๆ ยินดีต้อนรับ


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.