2

RedHatOSで書かれたシェルスクリプトがあります。このスクリプトをWindows環境で実行する必要があります。

そこで、cygwinを使用してWindowsでスクリプトを実行しました。

しかし、私が使用してスクリプトを実行すると

sh housekeeper.sh 

RedHatOSでは再現されない次のエラーが発生します

line 12: $'\r': command not found

しかし、私のスクリプトの行番号12は空です

  08  #
  09  ######################################################################
  10  #### PARAMETERS TO SET BEGIN
  11  ######################################################################
  12  
  13  # archive setttings
  14  ARCHIVE_USER=abc                      # archive storage user name  (default)
  15  ARCHIVE_GROUP=app                     # archive storage user group (default)
  16  ARCHIVE_PATH=/test/file               # archive storage directory (default)
  17  ARCHIVE_DELAY=+8

誰かがここのスクリプトまたはここのcygwinの何が問題なのか教えてもらえますか?

助けてくれてありがとう

4

2 に答える 2

5

ほとんどの場合、cygwinshはUNIXの行区切り文字(つまり\n)を期待していますが、代わりにWindowsの行区切り文字を検出している\r\nため、コマンドであるかのように実行しようとし\rています。これは、Windowsベースのテキストエディタでこのスクリプトを編集した場合に簡単に発生する可能性があります。

コマンドがある場合は、それをdos2unix使用するか、strを削除できます。\r

tr -d '\r' < old.sh > new.sh
于 2012-05-14T16:29:35.810 に答える
1

dos2unixこのファイルでWindowsでコマンドを実行してから、これを実行してみてください

于 2012-05-14T16:24:13.063 に答える