インターネットからシェル スクリプトをコピーして 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.エラー報告現象:構文エラー: 予期しないファイルの終わり (「}」が必要)
解決策:欠落している } 記号を見つけて追加します。
問題の原因: { } 記号がペアで表示されない