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
**请**发布真实的“剧本”。 –
听起来就像你在Windows上创建了bash脚本,因此该文件具有CRLF行尾。尝试在文件上使用dos2unix。 –