คำถามติดแท็ก variable-expansion

7
สคริปต์แยกวิเคราะห์คำสั่งของ Windows (CMD.EXE) ทำอย่างไร
ฉันวิ่งเข้าไปในss64.comซึ่งให้ความช่วยเหลือที่ดีเกี่ยวกับวิธีการเขียนสคริปต์แบทช์ที่ Windows Command Interpreter จะทำงาน อย่างไรก็ตามฉันไม่สามารถหาคำอธิบายที่ดีเกี่ยวกับไวยากรณ์ของสคริปต์แบบแบตช์ว่าสิ่งต่าง ๆ ขยายหรือไม่ขยายและวิธีการหลบหนีสิ่งต่าง ๆ นี่คือคำถามตัวอย่างที่ฉันไม่สามารถแก้ไขได้: ระบบใบเสนอราคามีการจัดการอย่างไร? ฉันสร้างสคริปต์TinyPerl ( foreach $i (@ARGV) { print '*' . $i ; }) รวบรวมมันและเรียกมันด้วยวิธีนี้: my_script.exe "a ""b"" c" →ผลลัพธ์คือ *a "b*c my_script.exe """a b c""" →เอาท์พุทมัน *"a*b*c" echoคำสั่งภายในทำงานอย่างไร สิ่งที่ถูกขยายภายในคำสั่งนั้น? ทำไมฉันต้องใช้for [...] %%Iในสคริปต์ไฟล์ แต่for [...] %Iในเซสชันแบบโต้ตอบ? ตัวหนีคืออะไรและในบริบทใด จะหลีกเลี่ยงเครื่องหมายเปอร์เซ็นต์ได้อย่างไร? ตัวอย่างเช่นฉันจะสะท้อนอย่าง%PROCESSOR_ARCHITECTURE%แท้จริงได้อย่างไร ฉันพบว่าecho.exe %""PROCESSOR_ARCHITECTURE%งานได้มีวิธีแก้ไขปัญหาที่ดีกว่าหรือไม่ …

30
วิธีใดเป็นวิธีที่ดีที่สุดในการลบเส้นทางออกจากตัวแปร $ PATH ใน Bash
หรือโดยทั่วไปฉันจะลบรายการออกจากรายการที่คั่นด้วยโคลอนในตัวแปรสภาพแวดล้อม Bash ได้อย่างไร ฉันคิดว่าฉันเคยเห็นวิธีง่ายๆในการทำเมื่อหลายปีก่อนโดยใช้รูปแบบการขยายตัวแปร Bash ขั้นสูง แต่ถ้าเป็นเช่นนั้นฉันก็หลงทาง การค้นหา Google อย่างรวดเร็วพบผลลัพธ์ที่เกี่ยวข้องเพียงไม่กี่รายการและไม่มีสิ่งใดที่ฉันจะเรียกว่า "เรียบง่าย" หรือ "หรูหรา" ตัวอย่างเช่นสองวิธีโดยใช้ sed และ awk ตามลำดับ: PATH=$(echo $PATH | sed -e 's;:\?/home/user/bin;;' -e 's;/home/user/bin:\?;;') PATH=!(awk -F: '{for(i=1;i<=NF;i++){if(!($i in a)){a[$i];printf s$i;s=":"}}}'<<<$PATH) ไม่มีอะไรตรงไปตรงมา? มีอะไรที่คล้ายคลึงกับฟังก์ชัน split () ใน Bash หรือไม่? ปรับปรุง: ดูเหมือนว่าฉันต้องขอโทษสำหรับคำถามที่คลุมเครือโดยเจตนา ฉันไม่ค่อยสนใจที่จะแก้ปัญหาการใช้งานที่เฉพาะเจาะจงมากกว่าการกระตุ้นให้เกิดการสนทนาที่ดี โชคดีที่ได้มา! มีเทคนิคที่ชาญฉลาดอยู่ที่นี่ ในท้ายที่สุดฉันได้เพิ่มฟังก์ชั่นสามอย่างต่อไปนี้ในกล่องเครื่องมือของฉัน เวทมนตร์เกิดขึ้นใน path_remove ซึ่งส่วนใหญ่มาจากการใช้awkตัวแปร RS อย่างชาญฉลาดของ …

7
จะรับตัวอักษรตัวแรกในตัวแปร Bash ได้อย่างไร?
ฉันมีตัวแปร Bash $wordซึ่งบางครั้งอาจเป็นคำหรือประโยคเช่น: word="tiger" หรือ: word="This is a sentence." ฉันจะสร้างตัวแปร Bash ใหม่ซึ่งเท่ากับเฉพาะอักษรตัวแรกที่พบในตัวแปรได้อย่างไร เช่นข้างต้นจะเป็น: echo $firstletter t หรือ: echo $firstletter T
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.