web-dev-qa-db-ja.com

WSLのbashスクリプトを使用して「cd」またはディレクトリを変更できない

buntu bashをWindowsマシンにインストールしたので、Linuxスクリプトを仕事から離れてテストできます。基本的な「hello world」と変更ディレクトリ(cd)を含む非常に単純なスクリプトを作成しましたが、実行するとhello worldが表示されます。 cd to directory行でエラーが発生します。

エラーは次のとおりです。

$ ./test.sh
hello world
zipping away
./test.sh: line 6: cd: $'/home/fjaffer/temp\r\r': No such file or directory
./test.sh: line 7: $'\r': command not found
ffr@DP-PC:~$

私のスクリプトtest.shは以下です:

#!/bin/bash
echo "hello world"
echo "zipping away"
dir=/home/fjaffer/temp
cd $dir

お知らせ下さい?ありがとうございました。

12
Femina Jaffer

Windowsマシンでスクリプトを作成したため、各行の最後にいくつかの\r(キャリッジリターン)が追加されています。

次のように削除します。

tr -d '\r' < test.sh > new-test.sh

変数の値も引用してください:

cd "$dir"

次に、スクリプトを実行します。

./new-test.sh

ヒントとして、以下を使用することをお勧めします。

 cd ... || exit

障害が発生した場合。


ファイルの保存にLinux形式を使用するようにエディターを構成する(可能な場合)またはnanoのようなbashのエディターを使用します。

enter image description here

17
Ravexina

別のオプションは、dos2unixコマンドを使用してファイルをUnixタイプ形式に変換することです。

使用法:

dos2unix your_file
11
αғsнιη