编辑:
似乎在工作bash
。看来问题与zsh
。如果有更好的网站发布此问题,请告诉我。
我正在编写一个创建一系列目录的简单脚本。我希望用户先确认。我使用以下内容作为基础,但似乎无法使其在bash函数中运行。如果我将其放在函数之外,则可以正常工作。这是一个孤立的示例:
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
- 我希望该函数位于配置文件中,因此我可以从任何目录(理想情况下是.bashrc或.zshrc)调用它
- 我已经纠正了第一条注释行的格式。问题仍然存在
zsh
- Bash版本是3.2,但是您已经帮助我弄清楚问题出在zsh而不是bash。
我使用了不正确的问题标记,
—
尼克·汤姆林
zsh
但我不认为与bash脚本会有冲突(我还有其他几个运行良好的类似脚本)。我已重新标记它,并回答了您的问题。感谢您指出正确的方向!
您如何启动程序?仅当您想使用执行文件时,才需要使用shebang(#!)解释器`行
—
Hennes
./read.sh
。如果您以任何其他方式运行它,或者将其放在启动脚本中,则不需要它。如果要在zsh中使用`zsh ./read.sh'运行它,则以#开头的行将被忽略。他们也感到困惑,因为他们给人的印象是,当您使用zsh时,您会使用bash。
@NickTomlin您是否知道如何使其工作而不必在Enter(在ZSH下)后面加上“ y”?
—
syntagma
@REACHUS las,我没有。祝好运!
—
尼克·汤姆林
#! /bin/bash
在她的背后有一个空格?我以为那些不被允许?3)'#!/ usr / bin / env bash'可能更好。4)哪个bash版本?(我在FreeBSD上使用bash 4.1.10进行了测试,没有出现错误)