シェルスクリプト内の変数の命名規則はありますか?


113

ほとんどの言語には変数の命名規則があり、シェルスクリプトで最も一般的なスタイルはMY_VARIABLE=fooです。これは慣習ですか、それともグローバル変数専用ですか?スクリプトのローカル変数はどうですか?


1
誰もが従うべきだと私が知っている唯一のものは、すべての大文字の名前がシェル用に予約されていることです。シェルが将来予約する可能性のある重要なものPATHやその他のものを誤って破壊することを避けるためにそれらを使用しないでくださいHOME
jw013

3
実際、通常、すべての大文字の名前は環境変数に使用されます。一部の変数(PATHなど)はシェルによって解釈され、他の変数(LANGUAGEやPRINTERなど)は他のプログラムによって解釈される場合がありますが、それ以外に特別なものはありません。
jlp

「環境変数」は確かに適切な名前です。答えに含めます。
ジッピー

正式ではありませんが、このGoogleガイドにはgoogle.github.io/styleguide/shell.xmlという優れた提案があります。それは、定数とエクスポートされた変数についてのみすべての上限に固執することを提案します。個人的には、他の人が推奨しないので、グローバルのキャメルケースが好きです。これにより、命名の衝突の可能性が低くなります。加えて、私は彼らが読む方法が好きです。
バイナリフィール

回答:


111

オペレーティングシステムやシェルスタートアップスクリプトなどによって導入される環境変数またはシェル変数は、通常すべてにありCAPITALSます。

独自の変数がこれらの変数と競合しないようにするには、を使用することをお勧めしますlower case


32
lower_caseアンダースコア区切りまたはcamelCase
ギャレットホール

3
@GarrettHallそれは完全にあなた次第です。一度スティックを選んでください。一貫性は、実際の選択よりも重要です。
jw013

2
好みの問題?私は個人的にはCスタイルが好きです。camelCaseなぜなら、それは短く、andいアンダースコアを使用しないからです。味、スタイル、
...-ジッピー

19
好みの問題?個人的には、アンダースコアが分離されていて読みやすくなっています。
ヤノス

4
完全を期すため、環境変数は、従来、すべて大文字のシェル変数名の唯一の範疇ではありません-このルールはまた、ビルトイン(同様に適用されるPWDPS4またはBASH_SOURCE)。
チャールズダフィー

62

はい、bashには変数名を含む完全なコードスタイルの規則があります。たとえば、ここにGoogleのシェルスタイルガイドがあります。

特に変数名の要約として:

変数名:小文字、単語を区切るアンダースコア付き。例:my_variable_name

定数環境変数名:アンダースコアで区切られたすべての大文字。ファイルの先頭で宣言されています。例:MY_CONSTANT


1
上記のリンクは現在無効に
サム

1
@サム、ありがとう。うん、それ。Googleがgooglecode.comの使用をやめた頃ですlol
Anonsage

1
くださいあなたは常にGoogleが言うのですか?;-)
tim.rohrer

1
これらの規則は、独自のオープンソースプロジェクトのGoogleのものにすぎません。非常に優れたルールではありますが、すべてのプロジェクトに適用できるわけではありません。
smonff

1

単語を区切るアンダースコアが最適な方法のようです。
自由に選択できるときに、camelCaseよりsnake_caseを好む理由がいくつかあります。

  1. 柔軟性:大文字と小文字を使用できます(MY_CONSTANTandなどmy_variable)。
  2. 一貫性:数字を読みやすくするために数字を区切ることができ(例1_000_000_000)、この機能は多くのプログラミング言語でサポートされています。
  3. 共通:正規表現\wが単語の文字や数字([a-zA-Z0-9_])などのアンダースコアを処理する時点で共通です。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.