【发布时间】: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