遵循我正在执行的shell脚本

#!/bin/sh

echo "Enter [y/n] : "
read opt

它的yields 是

Enter [y/n] : 
Y

我希望变量应该在同一行上读取,如下所示

Enter [y/n] : Y

我想应该很简单,但我对bash脚本还不熟悉.

推荐答案

shebang #!/bin/sh意味着您正在为历史悠久的Bourne shell(我认为在Solaris等系统上仍然可以找到)编写代码,或者更有可能为POSIX定义的标准shell语言编写代码.这意味着read -pecho -n都不可靠.

标准/便携式解决方案是:

printf 'Enter [y/n] : '
read -r opt

(-r防止了\的特殊处理,因为read通常在一条线的末尾接受它作为一条线的延续.)

如果您知道您的脚本将在具有Bash的系统上运行,那么可以将shebang更改为#!/bin/bash(或#!/usr/bin/env bash),并使用所有高级Bash功能.(许多系统都有/bin/sh符号链接到bash,因此它可以以任何方式工作,但依赖于这一点是不好的做法,而bash在以sh的名称执行时实际上禁用了它自己的一些功能.)

Linux相关问答推荐

一个关于Linux中的fork()和物理地址的奇怪问题

jinja2.exceptions.TemplateSyntaxError:预期标记,,得到整数(支持十六进制,八进制和二进制整数文字)

如何在 gcc 搜索路径上防止多个版本的 Boost?

如何从 AWK 中的 CSV 列中获取中值? (Linux)

使用 sed 或 awk 在 linux 中将第一行中的一个单词替换为第二行中的另一个单词

当未在日志(log)中输入确切的时间戳时如何过滤日期范围内的值

判断条件是否为假

在使用文件时截断文件 (Linux)

任何方式以编程方式在android上运行shell命令?

你如何在 C 中的 Linux 上进行非阻塞控制台 I/O?

NGINX:connect() 到 unix:/var/run/php7.0-fpm.sock 失败(2:没有这样的文件或目录)

如何查看安装的 pip 包大小?

如何在shell的递归目录中列出特定类型的文件?

在 PHP / Apache / Linux 环境中,为什么 chmod 777 是危险的?

当父进程被杀死时,使用 fork() 创建的子进程是否会自动被杀死?

Linux SCHED_OTHER、SCHED_FIFO 和 SCHED_RR - 区别

编译 OpenGL 程序 GL/glew.h 缺失

查找和基本名称不能很好地播放

如何限制我网站的 API 用户?

学习内核编程