สคริปต์ Bash ง่าย ๆ


5

ฉันพยายามจับ Bash scripting ผ่าน Cygwin สคริปต์ของฉันเกี่ยวกับเรียบง่ายที่สุดเท่าที่จะทำได้

ฉันเปลี่ยนไดเรกทอรีเป็นรูทของไดรฟ์ C ของฉันและพิมพ์ตำแหน่งใหม่

#!/usr/bin/bash 
cd /cygdrive/c
pwd

ถูกบันทึกในไฟล์chdir.shในโฮมไดเร็กตอรี่ของฉัน ฉันโทร./chdir.shจาก bash prompt ซึ่งส่งผลให้เกิดข้อผิดพลาด

: No such file or directorygdrive/c
/cygdrive/c/Documents and Settings/rcotton

แน่นอนฉันมีไดรฟ์ C และคำสั่งcd /cygdrive/cทำงานเมื่อฉันเรียกมันโดยตรงจาก bash prompt

ฉันตระหนักว่าปัญหานี้อาจเป็นเรื่องง่ายอย่างโง่เขลา ได้โปรดบอกฉันทีว่าฉันทำอะไรผิด

คำตอบ:


7

ในกรณีที่คุณแก้ไขสคริปต์ด้วยเครื่องมือแก้ไขซึ่งไม่ได้เป็นส่วนหนึ่งของสภาพแวดล้อม Cygwin (เช่นอะไรเช่น 'Notepad *', 'WordPad' ฯลฯ ): แปลงสคริปต์ของคุณเป็น Unix-lineendings ผ่านเครื่องมือ 'dos2unix' .

สคริปต์นั้นถูกต้องอย่างแท้จริงไม่จำเป็นต้องมี / หรือ \ เปลี่ยนแปลงใด ๆ ข้อความแสดงข้อผิดพลาด

: No such file or directorygdrive/c

ทำให้ฉันคิดถึงปัญหาเกี่ยวกับการจัดเรียงข้อมูลตั้งแต่ \ r \ n (การสิ้นสุดบรรทัด Windows) ในกรณีที่คุณไม่ได้ติดตั้ง 'dos2unix':

tr -d \\r < win.txt > unix.txt

หรือ

sed -e 's/$/\r/' < unix.txt > win.txt

1
เรียกได้ว่าดีมาก ๆ มันเป็นผลตอบแทนการขนส่งส่อเสียดที่ทำให้เกิดความประหลาด
ริชาร์ดคอตตอน

0

คุณแน่ใจหรือไม่ว่าคุณกำลังใช้ฟอร์เวิร์ดสแลชและไม่ใช่แบ็กสแลชในคำสั่ง cd ของคุณ? ปัญหาของคุณจะเกิดจากการเข้าใจผิดทั้งสองนี้

ลองใช้ตัวแปรเหล่านี้หากมีเพียงสแลชสแลชเดียวที่สร้างขึ้นที่นั่นและสร้างข้อผิดพลาดแปลก ๆ นี้:

cd //cygdrive//c

หรือ

cd \\cygdrive\\c

cd //cygdrive//c: No such host or network pathrive//cจะช่วยให้เกิดข้อผิดพลาด cd \\cygdrive\\cให้ข้อผิดพลาดเหมือนเดิม
Richard Cotton

0

ลอง#!/usr/bin/bash.exeดูว่ามันสร้างความแตกต่างหรือไม่ อาจใช้งานได้กับการติดตั้ง Cygwin ของฉัน แต่ไฟล์นั้นมีชื่อว่า bash.exe


0

ถึง: ttarchala (และ Mr Cotton)

ใน Cygwin, //start1/path_2/stuff/longทริกเกอร์ UNC โหมดสับซึ่งถือว่าstart1เป็นเซิร์ฟเวอร์ SMB path_2ที่มีส่วนแบ่ง นี่ไม่ใช่สิ่งที่ตั้งใจไว้

บางครั้งสิ่งนี้จะกัดคุณในเชลล์สคริปต์บางตัวที่แบ่งใช้กับ UNIX โดยที่เครื่องหมายสแลชหลาย ๆ ตัวถูกรวมเข้าด้วยกันเป็นสแลชเดียว ใน cygwin เครื่องหมายสแลชหลายรายการรวมกันยกเว้นว่าเป็นจุดเริ่มต้นซึ่งเป็นโหมดทริกเกอร์ UNC

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