我编写了一个 bash 脚本来自动执行某些命令,但脚本中的第一行在需要运行的计算机上不起作用。代码如下
#!/bin/bash
#some comments
read -p 'press enter to begin'
echo "Please Wait..."
#rest of the script
这是自动化脚本的一个相当简单的启动,它在我用来测试和运行脚本的虚拟机上运行良好,但是当脚本在工作环境中运行时,它将文本
read -p 'press enter to begin'
直接输出到命令行,然后停止运行;而不是带有提示的读取命令的期望结果press enter to begin
,等待用户的输入,然后Please wait...
在脚本运行时回显。
sudo bash ./path/to/file.sh
我不知道该怎么做才能解决这个问题,因为我在网上找不到任何关于这个问题的信息。
我已经完成了所有基本的故障排除步骤;确保该文件是可执行的,运行时指定它是一个 bash 文件(实际上没有 bash 标注就不会运行),并直接在命令行上运行脚本中的相同读取命令(输出所需的内容)的结果press enter to begin
并等待用户输入)。有什么建议么?我计划set -x
在今天或明天有机会时使用该命令运行脚本。
答案1
当使用我的读取命令时,我弄清楚了为什么脚本会被破坏
read -p 'prompt'
代替
read -p "prompt"
当我将其更改为双引号时,脚本对于我在这个问题中询问的开始部分运行良好。为什么这种特定格式会破坏脚本?我不知道,我运行它的机器非常挑剔,并且对于应该工作并且在其他环境中工作的东西有一些奇怪的格式首选项。