インターネットからシェル スクリプトをコピーして Linux で実行する際に発生するさまざまな問題の概要

インターネットからシェル スクリプトをコピーして Linux で実行する際に発生するさまざまな問題の概要

ショートカット キー Ctrl+U で Web ページのソース コードを表示します
1.エラー報告現象: ': そのようなファイルまたはディレクトリはありません

解決策: Linux システムで実行: dos2unix ファイル名

問題の原因:本質は、ファイル内のバイナリ記号^M

 参考リンク: Linux Develop Paper で ^M をドロップする 4 つの方法
2.エラー報告現象: env: can't run 'bash': No such file or directory

回避策: #!/bin/bash を #!/bin/sh に置き換えます。

問題の原因:本質は sh と bash の問題です

ubuntu 6.10 以降、ubuntu は以前のデフォルトの bash シェルをダッシュ​​ シェルに 置き換えました。ダッシュ シェルは、 従来の /bin/ bash ではなく/bin/dashではなく/bin/ sh リンク に明示されています 

これは、ls -l /bin/*sh コマンドで確認できます。

そのため、bash が見つからないというメッセージが表示されます。解決策は、sh の代わりに bash を使用してスクリプトを実行することです: bash test.sh または #!/bin/bash を #!/bin/sh に置き換えます

3.各種句読点の文字化け問題
1.エラー報告現象:プロンプト xxx quot: not found

解決策:「」を「」に置き換えます。

問題の原因:句読点「」が文字化けしているため、「」を「」に置き換えてください。

2. && 句読点文字化け: && を使用して文字化けを置き換えます &&
3. >> 文字化け: >> を使用して文字化けを置き換えます
& gt;> 文字 >
第 4 に、エラー現象:構文エラー: ループ変数エラーの解決策が間違っています。

参考リンク:

構文エラー: ループ変数エラーの解決策が間違っています

構文エラー: ループ変数が不正です (構文エラー: ループ変数が不正です)_コンピュータ トレーニング

解決策: for ループ メソッドを while ループ メソッドに置き換えます。

問題の原因:for (( expr ; expr ; expr ))この C 言語形式の構文はsh

ubuntu 6.10 以降、ubuntu は以前のデフォルトの bash シェルをダッシュ​​ シェルに 置き換えました。ダッシュ シェルは、 従来の /bin/ bash ではなく/bin/dashではなく/bin/ sh リンク に明示されています 

これは、ls -l /bin/*sh コマンドで確認できます。

そのため、sh コマンドを使用してスクリプトを実行する場合、実際にはダッシュが使用されますが、ダッシュは C 言語形式の for ループの記述方法をサポートしていません。

5. Linux #!/bin/sh スクリプトにおける eq、ne、le、ge、lt、gt の意味

参考リンク:https://www.cnblogs.com/hankyoon/p/12612549.html

if [ 1 -ne 1 ];then
...
fi

-eq: 等しい
-ne: 等しくない
-le: 以下
-ge: 以上
-lt: 未満
-gt: より大きい

6.エラー報告現象:構文エラー: 予期しないファイルの終わり (「}」が必要)

解決策:欠落している } 記号を見つけて追加します。 

問題の原因: { } 記号がペアで表示されない


 

おすすめ

転載: blog.csdn.net/a1809032425/article/details/131487689
おすすめ