Score:0

-f $file_name ไม่ทำงานเมื่อใช้ ~/file_name แต่ใช้งานได้เมื่อใช้ /home/james/file_name

ธง cn

สิ่งนี้ทำให้ฉันคลั่งไคล้ ฉันมีสคริปต์ที่ค่อนข้างง่าย

#!/bin/bash

อ่าน -p "ป้อนชื่อไฟล์ changeList.txt: " file_name

ถ้า [ -f $file_name ]; แล้ว
    echo "กำลังอ่านไฟล์..."
    แมว $file_name | grep "เปลี่ยน" | ตัด -d ' ' -f 2
    echo "เสร็จสิ้นกระบวนการ"
อื่น
    echo >&2 "พบบันทึกไฟล์"
    ทางออก 1
ไฟ 

เสียงสะท้อน "กำลังออก..."
ทางออก 0

ฉันส่งไฟล์ ~/changeList.txt ซึ่งล้มเหลว ฉันผ่าน /home/james/changeList.txt และใช้งานได้ ฉันลอง

file_name=~/changeList.txt
[ -f $file_name ] && echo "จริง" || สะท้อน "เท็จ"

จากเทอร์มินัลของฉันและส่งคืนค่าจริง
ฉันใช้ Ubuntu บน wsl 2 และฉันลงชื่อเข้าใช้ด้วยชื่อ james

hr flag
ที่เกี่ยวข้อง: [เหตุใดจึงไม่ดำเนินการขยายตัวหนอนในอินพุตเพื่ออ่าน](https://askubuntu.com/questions/1093906/why-isnt-tilde-expansion-performed-on-the-input-to-read)
Score:1
ธง tm

การขยายตัวของ Tilde เกิดขึ้นก่อนการขยายแบบผันแปร ในการมอบหมายค่าทางขวามือผ่านการขยายตัวหนอน ดังนั้นตัวแปรจึงถูกกำหนดเส้นทางแบบเต็ม ดู ผู้ชายทุบตี สำหรับรายละเอียด

James Ayres avatar
cn flag
คุณรู้หรือไม่ว่ามีวิธีการขยายตัวหนอนจากสตริงที่เข้ามาหรือฉันไม่ควรผ่านตัวหนอน?
tm flag
`man bash` กล่าวถึง `set expand-tilde On` ด้วย `read -e` แต่ฉันไม่สามารถทำให้มันใช้งานได้
au flag
@JamesAyres มีตัวเลือกมากมาย (ของระดับความซับซ้อนและความน่าเชื่อถือที่แตกต่างกัน) ภายใต้คำถาม stackoverflow ["วิธีขยายตัวแปรพิเศษด้วยตนเอง (เช่น: ~ tilde) ใน bash"](https://stackoverflow.com/questions /3963716/วิธีการขยายด้วยตนเองตัวแปรพิเศษ-ex-tilde-in-bash)

โพสต์คำตอบ

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