2017-09-27 8 views
0

私のbashコードfile.sh
バッシュ文字列の連結生産奇妙な結果

username=$1 
pkgpath="/home/${username}_tmp.txt" 
echo $username 
echo $pkgpath 

今すぐ結果生成しなければならないコマンドbash file.sh abcでスクリプトを実行する:

abc 
/home/abc_tmp.txt 

しかし、私は取得しています出力を:

abc 
_tmp.txtc 

誰かがこの現象が発生し、目的の結果を得る方法がなぜ説明できますか?

私はpkgpath="/home/${username}"を使用して、私に与えていることに言及したいと思います
EDIT /home/abc(希望)が、pkgpath="${username}_tmp.txt"を実行すると、私に_tmp.txt(奇妙な)を与えます。

+0

最後に余分な文字が追加されると言っていますか? (拡張されていない変数値は別として)。このスクリプトをコマンドラインで実行していますか?あなたは偶然Windowsエディタ(Notepad ++)のスクリプトを編集したでしょうか? – Inian

+0

私はちょうど私のマシンにそれをコピー/貼り付け、それは正常に働いた – Will

+0

実際に私は私のRHEL5デスクトップにリモートログインを実行していたが、私はデスクトップと同じ結果で直接実行しようとしたとしても問題ではない – iammrmehul

答えて

0

abcの後に復帰文字を挿入すると、bash file abcというコマンドが実行されたようです。原因はおそらくあなたの端末であるか、コマンドをコピーしてコピーしており、実現することなく^Mが含まれています。

bashが2行目に出力しているのは、実際には/home/abc^M_tmp.txtです。これは、_tmp.txtcと表示されます。コマンドの出力をless -Rにパイプすることで簡単に確認できます。

+0

はい、本当に^^Mです。どうすればいいですか? – iammrmehul

+0

この回答を参照した後:https://unix.stackexchange.com/questions/56024/bash-korn-shell-script-edited-on-windows-throws-error-m-not-見つかった 私はUnix行を実装しました。これはWindowsの行が崇高なテキストで終わり、問題は解決されました! – iammrmehul