แก้ไข:
bash
ดูเหมือนว่าการทำงานภายใน zsh
แต่ดูเหมือนว่ามันมีปัญหาที่เกี่ยวข้องกับ หากมีเว็บไซต์ที่ดีกว่าในการโพสต์ปัญหานี้ให้ฉันทราบ
ฉันกำลังเขียนสคริปต์ง่ายๆที่สร้างชุดไดเรกทอรี ฉันต้องการให้ผู้ใช้ยืนยันก่อนที่จะทำเช่นนั้น ฉันใช้สิ่งต่อไปนี้เป็นพื้นฐาน แต่ดูเหมือนจะไม่สามารถทำให้มันทำงานภายในฟังก์ชันทุบตีได้ ถ้าฉันวางมันไว้นอกฟังก์ชั่น นี่คือตัวอย่างที่แยกได้:
read.sh
#!/bin/bash
test() {
read -p "Here be dragons. Continue?" -n 1 -r
if [[ $REPLY =~ ^[Yy]$ ]]
then
echo "You asked for it..."
fi
}
รหัสจากนี้โพสต์ SO
จัดหาไฟล์และ / หรือผลในข้อผิดพลาดต่อไปนี้:test
read:1: -p: no coprocess
เอาท์พุทเดียวกันเมื่อฉันวางไว้ในของฉัน.bashrc
แก้ไข ::
@hennes
- ฉันต้องการให้ฟังก์ชั่นอยู่ในไฟล์ config ดังนั้นฉันสามารถเรียกมันได้จากไดเรกทอรีใด ๆ (โดยเฉพาะอย่างยิ่ง. bashrc หรือ. zshrc ของฉัน)
- ฉันแก้ไขการจัดรูปแบบของบรรทัดที่คอมเม้นต์แรกแล้ว ปัญหายังคงมีอยู่
zsh
- เวอร์ชั่น Bash คือ 3.2 แต่คุณได้ช่วยฉันหาปัญหาแล้วว่าเป็นปัญหากับ zsh ไม่ใช่การทุบตี
zsh
แต่ไม่คิดว่าจะมีข้อขัดแย้งกับสคริปต์ทุบตี ฉัน retagged มันและตอบคำถามของคุณ ขอบคุณที่ชี้นำฉันในทิศทางที่ถูกต้อง!
./read.sh
สายเป็นสิ่งจำเป็นเท่านั้นถ้าคุณต้องการที่จะเรียกใช้ไฟล์ที่มี ไม่จำเป็นว่าคุณจะเรียกใช้ด้วยวิธีอื่นใดหรือถ้าคุณใส่ไว้ในสคริปต์เริ่มต้น และถ้าคุณต้องการเรียกใช้เป็น zsh ด้วย `zsh ./read.sh 'ดังนั้นบรรทัดที่ขึ้นต้นด้วย # จะถูกละเว้น พวกเขายังสับสนตั้งแต่พวกเขาให้ความประทับใจที่คุณใช้ bash เมื่อคุณใช้ zsh)
#! /bin/bash
มีช่องว่างด้านหลังเธอ shebang? ฉันคิดว่าสิ่งเหล่านั้นไม่ได้รับอนุญาต? 3) '#! / usr / bin / env bash' น่าจะดีกว่า 4) เวอร์ชั่นทุบตีใด? (ฉันทดสอบกับทุบตี 4.1.10 ใน FreeBSD และไม่มีข้อผิดพลาด)