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。 –