598

このチュートリアルを通じて、いくつかのタスクを自動化するためのbash スクリプトを学習しています。パテを使用してサーバーに接続しています。

にあるスクリプト.../Documents/LOGは次のとおりです。

#!/bin/bash
# My first script
echo "Hello World!"

そして、私は以下を実行しましたread/write/execute permissions

chmod 755 my_script

次に、入力する./my_scriptと、タイトルに記載されているエラーが表示されます。

いくつかの同様の質問がこれらを見たいと思っていたので、役立つと思います:

which bash

/bin/bash

echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/bin/mh

現在のディレクトリをに追加しようとしましPATHたが、うまくいきません..

4

11 に答える 11

822

ターミナルで次のコマンドを実行します

sed -i -e 's/\r$//' scriptname.sh

それから試してください

./scriptname.sh

それはうまくいくはずです。

于 2015-04-20T12:13:18.173 に答える
771

この問題は、Windows 環境でスクリプトを作成し、Unix 環境で実行するために移植するときに発生しました。

dos2unix スクリプトで実行してみてください:

http://dos2unix.sourceforge.net/

viまたは、and testを使用して Unix 環境でスクリプトを書き直すだけです。

Unix は異なる行末を使用するため、Windows で作成したファイルを読み取ることができません。したがって、^M は不正な文字と見なされます。

Windows でファイルを作成してから移植する場合は、エディタが UNIX 形式でファイルを作成するように設定されていることを確認してください。

画面右下のnotepad++で、ドキュメントのフォーマットを教えてくれます。デフォルトでは、 と表示されますDos\Windows。変更するには、

  • 設定 - >設定
  • 新しいドキュメント / デフォルトのディレクトリ タブ
  • 形式を unix として選択し、閉じます
  • 新しいドキュメントを作成する
于 2013-01-08T16:07:24.690 に答える
150

Windows または Mac でSublime Textを使用してスクリプトを編集する場合:

をクリックしてView > Line Endings > Unix、ファイルを再度保存します。

ここに画像の説明を入力

于 2014-04-21T17:26:34.910 に答える
56

notepad ++では、特に押すことでファイルに設定できます

編集 --> EOL 変換 --> UNIX/OSX フォーマット

ここに画像の説明を入力

于 2014-06-03T10:54:40.113 に答える
18

問題は dos 行末にあります。以下はunix用に変換します

dos2unix file_name

注意: 最初に dos2unix をインストールする必要があるかもしれませんyum install dos2unix

それを行う別の方法は、sedコマンドを使用して dos 行末文字を検索し、UNIX 形式に置き換えることです。

$sed -i -e 's/\r$//' your_script.sh
于 2016-08-31T11:10:18.427 に答える
15

あなたのファイルには Windows の行末があり、Linux を混乱させています。

偽の CR 文字を削除します。次のコマンドで実行できます。

 $ sed -i -e 's/\r$//' setup.sh
于 2016-05-19T10:16:14.260 に答える
6

Geditでスクリプトを開き、適切なLine Endingオプションで保存することで、問題を解決できました。

ファイル > 名前を付けて保存...

プロンプトの左下に、Save As文字エンコードと行末のドロップダウン メニューがあります。行末を からWindowsに変更しUnix/Linux、保存します。

gedit

于 2016-05-26T19:10:41.337 に答える