gpt4 book ai didi

java - Bash 在 java 调用中添加了一个额外的字符

转载 作者:行者123 更新时间:2023-12-01 18:34:07 25 4
gpt4 key购买 nike

我有一个从命令行调用的 java 程序,如下所示:

java -cp bin Main a b 2

最后一个参数很重要,因为它是一个数字,我使用 Integer.parseInt 来读取它。当我使用 bash 脚本时,我使用:

java -cp bin Main $1 $2 $3

我用以下方式调用脚本:

./script a b 2

但是,当我调用脚本时,它无法解析 2,因为最后一个参数中添加了一个额外的字符。我尝试打印第二个字符,但它没有打印可读字符。我假设额外的字符是\n 或\r 或某些此类字符。当我将“2”作为第二个参数而不是第三个参数时,这种情况不会发生。谁能帮助我了解发生了什么事?我会忽略最后一个字符吗?谢谢。

最佳答案

Bash 没有添加任何内容。你的编辑做到了。始终确保将文件保存为 UNIX 格式文本文件以避免回车。

为了练习,让我们制作一个简单的、独立的测试用例,以便我们自己和其他人更容易找出您的问题。 bash tag wiki 中描述了执行此操作的提示。 .

这是一个用于验证行为的简单程序:

$ cat javamock
#!/bin/bash
echo "The third argument has ${#3} characters"

$ ./javamock a b 2
The third argument has 1 characters

这就是你所看到的

$ cat yourscript 
./javamock $1 $2 $3

$ bash yourscript a b 2
The third argument has 2 characters
<小时/>

好的,那么我们如何诊断呢?以下是我们如何判断您的脚本出现问题的方法:

$ shellcheck yourscript
In yourscript line 1:
./javamock $1 $2 $3
^-- SC1017: Literal carriage return. Run script through tr -d '\r' .

或者如何确认您是否已经知道您要查找的内容:

$ cat -v yourscript
./javamock $1 $2 $3^M

最后,应用的修复:

$ tr -d '\r' <yourscript  >fixedscript
$ bash fixedscript a b 2
The third argument has 1 characters

关于java - Bash 在 java 调用中添加了一个额外的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22793633/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com