read命令不等待输入

moh*_*eri 16 bash readline wait

我在bash中执行一个简单的脚本时遇到问题.脚本是这样的:

#! /bin/sh

read -p 'press  [ENTER]  to continue deleting line'
sudo sed -ie '$d' /home/hpccuser/.profile
Run Code Online (Sandbox Code Playgroud)

当我用./script执行脚本时,输出如下:

press  [ENTER]  to continue deleting line./script: 3: read: arg count
[sudo] password for user
Run Code Online (Sandbox Code Playgroud)

我直接在终端中运行read命令(从脚本复制并粘贴到终端),它工作正常; 它等待一个ENTER被击中(就像一个暂停).

Cha*_*ffy 22

因为您的脚本以#!/bin/sh而不是开头#!/bin/bash,所以您不能保证可以使用bash扩展(例如read -p),并且只能依赖符合标准的功能.

有关保证存在的功能列表,请参阅相关标准文档read.

在这种情况下,您可能需要两行,一行执行打印,另一行执行读取:

printf 'press [ENTER] to continue deleting...'
read _
Run Code Online (Sandbox Code Playgroud)