問題タブ [shellcheck]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
1430 参照

bash - 位置変数を使用しているときに、SC2001 (「代わりに ${variable//search/replace} を使用できるかどうかを確認してください」) を解決することは可能ですか?

可変位置にある可変文字列内の任意の文字を可変置換で置き換えるためのワンライナーを探しています。私はこの実用的な解決策を思いつきました:

使用例:

残念ながら、現在のソリューションを含むスクリプトで shellcheck を実行すると、次のように表示されます。

sed にパイプする代わりに、提案されているようにパラメーター展開を使用したいのですが、位置変数を使用する場合の適切なフォーマットについては不明です。公式ドキュメントでは、文字列内の配置についてまったく議論していないようです。

これは可能ですか?

0 投票する
2 に答える
49 参照

bash - 「while read」を使用するときに、リモートサーバーに渡される「if」ステートメントを適切にフォーマットする方法は?

Ubuntu 18
バッシュ 4.4.0

ディレクトリが存在するかどうかを確認するために if ステートメントを渡したいと思っています。もしそうなら、私はいくつかのコマンドとファイルをしたい. 同様の投稿を読みましたが、シェルチェックは私のフォーマットについて不平を言っています。

脚本:

シェルチェックの苦情:

よろしくお願いします。

0 投票する
2 に答える
12553 参照

bash - ソースファイルがスクリプトの先頭にある変数を表している場合、shellcheck が失敗するのはなぜですか?

Ubuntu 16.04
バッシュ 4.3.48

shellcheckソース ファイルがスクリプトの先頭にある $variablesを表している場合、 が失敗するのはなぜですか?

簡単なスクリプトを次に示します。

ここに私のソースファイルがあります:

からの返信は次のshellcheckとおりです。

$variablesがソース ファイルにあることをshellcheck知る方法はありますか?


Ubuntu 16.04でこれを機能させるために私がしたことは次のとおりです

@Dash-o は以下の手順を説明しました。

まず、次のように、ソース ファイル宣言の上の行にsource ディレクティブを追加します。
# shellcheck source=/path/to/sourcefile

次に、次のようにスクリプトの前に-xオプションを付けて実行shellcheckします。
shellcheck -x start.sh

-xオプションを使用すると、 source ディレクティブの直下で宣言されたソース ファイルshellcheckに従います。コマンドを実行すると、次のエラーが表示されました。

@Bayou は、私の OS には の新しいバージョンが必要であると述べましたshellcheck。Ubuntu 16.04 のインストールを確認しました。私のサーバーshellcheckには、Ubuntu 16.04 が提供する最新バージョンである 0.3.7 があったので、shellcheck開発者から最新のバイナリを入手してインストールしました。

コマンドを実行しましたが、shellcheck -x start.shエラーはありませんでした。

shellcheckそれから私は私にいくつかのエラーを与えることを余儀なくされました. cat $myVariableスクリプトの最後 に追加しました。

私は自分の理論をテストし、ソースファイルshellcheckをたどったところ、予期していたエラーが発生しました。

次に、 -xshellcheckオプションを指定せずに実行したところ、驚いたことに次のエラーが表示 されました。

そのため、 -xshellcheckオプションを指定せずに最新バージョンに更新すると、コマンド ラインで-xオプションが欠落しているというエラーも表示されます。そこで、start.shのsourcefile ディレクティブをコメント アウトすることにしました。

今、どうshellcheck思う か見てみましょう

わああああ?したがって、私の単純なスクリプトではsourcefile ディレクティブは実際には必要ないように見えますか、それとも、シャープ記号がすでに sourcefile ディレクティブを開始しているため、シェルチェックはまだ sourcefile ディレクティブが番号記号でコメントアウトされているのを見てますか? そのため、ソースファイル ディレクティブを完全に削除し、ソースファイルで割り当てられていない myVariable変数を参照する最後の行をコメント アウトしました。

shellcheck次に、レポートを確認します。

-xオプションでエラーなし。Ubuntu 16.04の最新バージョンの単純なシェル スクリプトの先頭にsourcefile ディレクティブが必要ないかどうかを確認するために、 -xオプションなしで実行しました。shellcheckshellcheck

つまり、ソース ファイルに従っていない場合は、開発者の github ( https://github.com/koalaman/shellcheckshellcheck ) から更新 し、次のように-xオプション を使用して、従うべきソース ファイルがあることを通知します。shellcheckshellcheck

このサイトが毎日私を助けてくれるので、これが誰かに役立つことを願っています!