【问题标题】:Linux bash shell script prompt user input and store in variable [duplicate]Linux bash shell脚本提示用户输入并存储在变量中[重复]
【发布时间】:2013-03-23 00:34:28
【问题描述】:

如何收集用户输入并将其存储在变量中以在 jar 文件执行的参数中使用?

尝试使用以下链接中的 read -p 和 bash 的 select 命令,但出现错误:How do I prompt for Yes/No/Cancel input in a Linux shell script? 这是我目前所拥有的:

#!/bin/bash

echo "Hello "$USER"."
echo "Enter System :"
read name
echo "Enter Format (JPG/PDF):"
read format 

java -jar ~/folder/myjar.jar -input ~/scripts/file -output$format ~/output/$name.$format

这部分有效,因为它生成输出文件,但名称变量丢失,格式变量在字符串 ok 中生成。运行它还会产生以下错误:": command not found" under hello user, "': not a valid identifierame" after enter system name

【问题讨论】:

  • 是原始脚本中没有 if 语句的“fi”,还是您在此处复制时忘记删除它?否则,我看不到您的用户输入内容有任何问题。 (不过,第一个提示可能最好写成"Hello $USER."。)
  • 那个“fi”不应该在那里,忘记删除了。我还应该补充一点,jar 可执行字符串是 ksar 输出的命令行。
  • 你能用详细标志执行你的脚本,这样我们就可以看到它在做什么? --> "bash -x myscript.sh"
  • + $'\r' : command not found ' echo '你好 michael.你好迈克尔。 + $'\r' : command not found ' echo 'Enter System: Enter System: + read $'name\r' ': not a valid identifiername ' echo '输入格式 (JPG/PDF): 输入格式 (JPG/PDF ): + 读取格式 $'\r' ': 不是有效标识符 + $'\r' : 找不到命令 + java -jar /home/michael/sar/myjar.jar -input /home/michael/scripts/file -输出 $'/home/michael/output//.\r' 解析时间:2207ms 行数:52381 行/毫秒:23.0 + $'\r' :找不到命令 + $'\r' :没有命令找到
  • @michael,这些错误消息意味着该错误与提示无关,与您的脚本保存为 DOS 格式的文本文件有关,而不是 UNIX 格式的文件。

标签: bash variables user-input


【解决方案1】:

看起来你可能有回车/windows行终止,尝试运行

dos2unix input.txt

sed 's/^M$//' input.txt > output.txt

tr -d '\r' < input.txt > output.txt

【讨论】:

    猜你喜欢
    • 2021-08-22
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 2017-06-13
    • 1970-01-01
    相关资源
    最近更新 更多