Score:0

วิธี "cd $variable" เมื่อตัวแปรพยายามเพิ่ม "\" ก่อนช่องว่าง (เส้นทางมีช่องว่าง)

ธง cn

สคริปต์ทุบตีของฉันลงทะเบียนเส้นทางของตัวเองเพื่อให้สามารถกลับไปที่โฟลเดอร์ของตัวเองได้หลังจากทำ ซีดี ที่ไหนสักแห่ง (แบบว่าถ้าสำรวจป่าอื่นแล้วย้ายบ้านได้)

และถ้าทางเดินมีช่องว่าง ผมก็ใช้ เสด เพื่อเพิ่ม \ ก่อนเว้นวรรค.

แต่เมื่อใช้ ซีดี $SCRIPTPATH ถึงตัวแปรนี้:

./newsed.sh: 11: cd: ไม่สามารถ cd ไปยัง /media/daniell/B/bkp/ST500LM012\

แหล่งที่มา: newsed.sh:

#!/bin/bash -e

tmp="$( cd -- "$(dirname "$0")" >/dev/null 2>&1 ; pwd -P )"
SCRIPTPATH="$(echo "$tmp" | sed 's/ /\ /g')"

echo "$SCRIPTPATH"

ล
ซีดี
ล
ซีดี $SCRIPTPATH
ล

echo $SCRIPTPATH สร้างเส้นทางปกติ (/media/daniell/B/bkp/ST500LM012\ HN-M500MBB\ Dat/0/ok/Pendrive/flshdrive/0.Floflis-DNA/layers/soil) ที่ฉันสามารถคัดลอกและ cd ลงไปด้วยตนเองและใช้งานได้ แต่เมื่อ ซีดี' โดยตรงกับตัวแปร (ซีดี $SCRIPTPATH) มันล้มเหลวทันทีหลังจาก \.

hr flag
*"และหากเส้นทางมีช่องว่าง ฉันใช้ sed เพื่อเพิ่ม \ ก่อนเว้นวรรคทุกครั้ง"* คุณสามารถหลีกเลี่ยงความจำเป็นในการทำเช่นนั้นได้ด้วยการอ้างถึงการขยายตัวแปรอย่างถูกต้อง เช่น `ซีดี "ตัวแปร $"`
cn flag
@steeldriver ขอบคุณ ผลผลิตดีขึ้นแล้ว แต่: `./newsed.sh: 11: cd: ไม่สามารถ cd ไปยัง /media/daniell/B/bkp/ST500LM012\ HN-M500MBB\ Dat/0/ok/Pendrive/flshdrive/0.Floflis-DNA/layers /ดิน` ?
hr flag
คุณยังคงหลบหนีช่องว่างด้วยแบ็กสแลชด้วย sed หรือไม่? ถ้าเป็นเช่นนั้น - อย่า
cn flag
@steeldriver แย่แล้ว! ขอบคุณมาก. หากคุณเปลี่ยนความคิดเห็นของคุณเป็นคำตอบ ฉันจะทำเครื่องหมายว่าเป็นคำตอบที่ถูกต้อง/ดีที่สุด
waltinator avatar
it flag
ไม่ต้องกังวลกับการเว้นวรรค เพียงแค่อ้างอิงการขยายตัวแปร: `cd "$tmp"`
Score:0
ธง cn

ใช้เครื่องหมายอัญประกาศล้อมรอบตัวแปรเพื่อป้องกันไม่ให้ช่องว่างถูกมองว่าเป็นตัวคั่นในเชลล์ เช่น

ซีดี "$SCRIPTPATH"

จะทำงาน.

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา