Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 无法从“中运行bash脚本示例”;linux命令行,一个完整的介绍,第二个“;_Macos_Bash_Shell_Unix_Zsh - Fatal编程技术网

Macos 无法从“中运行bash脚本示例”;linux命令行,一个完整的介绍,第二个“;

Macos 无法从“中运行bash脚本示例”;linux命令行,一个完整的介绍,第二个“;,macos,bash,shell,unix,zsh,Macos,Bash,Shell,Unix,Zsh,下面是我的zsh脚本的一个示例,该脚本是从原始脚本修改而来的: #!/bin/sh set -e # read-default.sh: supply a default value if user preses Enter key. read -e -p "What is your user name? " -i $USER echo "You answered: '$REPLY'" 以下是这本书的原始脚本: #!/bin/bash # read-default: supply a de

下面是我的zsh脚本的一个示例,该脚本是从原始脚本修改而来的:

#!/bin/sh

set -e

# read-default.sh: supply a default value if user preses Enter key.

read -e -p "What is your user name? " -i $USER
echo "You answered: '$REPLY'"
以下是这本书的原始脚本:

#!/bin/bash
# read-default: supply a default value if user presses Enter key.
read -e -p "What is your user name? " -i $USER
echo "You answered: '$REPLY'"
在运行zsh脚本之后,我犯了一个错误:

read-default.sh: line 7: read: -i: invalid option
read: usage: read [-ers] [-u fd] [-t timeout] [-p prompt] [-a array]
[-n nchars] [-d delim] [name ...]

我将非常感谢您的帮助!:)

正如您在shell的错误消息中所看到的,在调用
read
时,您不能使用
-i
标志。要解决您的问题,您需要检查
$REPLY
是否为空,如果为空,则提供默认值。

您的脚本是用什么语言编写的

bash
zsh
sh
编写的Shell脚本略有不同

似乎您正在使用
bash
功能,但使用
sh
运行代码

read
命令是一个shell内置命令。查看相应的手册页,了解shell允许哪些选项


例如,将shebang(第一行)改回
#就足够了/bin/bash
或使用
bash read default显式运行脚本。sh

您不能将
-i
选项用于
read
哦,谢谢,但是我如何以另一种方式运行此脚本?您需要检查
$REPLY
是否为空。非常感谢,我一直在考虑这个问题!在bash书籍中使用zsh,或者反过来使用zsh,这不是一个很好的实践;它们是不同的外壳,具有不同的扩展和与POSIX sh的不同偏差。无法投票支持您的答案,没有声誉,再次感谢。)@克斯特亚维特,哦,真遗憾:-)是的,因为这是我的第一个问题,你是第一个帮助我的人!你是说你的答案吗?@kostyawhite,是的,还有什么?:)我使用zsh作为我的登录shell,我已经解决了这个问题,如您所说更改了shebang,并使用
bash
运行脚本,谢谢!