1. スクリプトの実行時に渡されるパラメータがあるかどうか、または渡されるパラメータの数を確認します。
1. スクリプトの実行時に渡されるパラメータがあるかどうか、または渡されるパラメータの数を確認します。
シェル スクリプトでは、パラメータの数を決定するために、特別な変数を使用して、 $#
スクリプトまたは関数に渡されるパラメータの数を取得できます。
if [ $# -eq 0 ]; then
echo "No arguments provided."
else
echo "Number of arguments: $#"
fi
上記の例では、 $#
スクリプトまたは関数に渡される引数があるかどうかを確認するために変数の値がチェックされます。引数の数がゼロの場合は、「引数が指定されていません。」を出力します。それ以外の場合は、「引数の数:」の後に引数の数を出力します。
2. ファイルまたはフォルダーが存在するかどうかを確認します
1. ファイルが存在するかどうかを確認します
if [ -f "/path/to/file" ]; then
echo "File exists."
else
echo "File does not exist."
fi
上記の例では、/path/to/file を確認する実際のファイル パスに置き換えます。-f パラメータは、パスが通常のファイルかどうかを確認するために使用されます。ファイルが存在する場合は「ファイルが存在します。」と表示され、存在しない場合は「ファイルが存在しません。」と表示されます。
または
if [[ -f "/path/to/file" ]]; then
echo "File exists."
else
echo "File does not exist."
fi
角括弧 [] とは異なり、[[ はより多くの機能と柔軟性を提供し、条件付きテストでより一般的に使用されます。
または
テストコマンドをそのまま条件判定に使用することもできます。
注: 上記の例のパスは概略パスであり、確認する実際のファイル パスに置き換える必要があります。
ファイルではなくディレクトリが存在するかどうかを確認したい場合は、 -f
パラメータを -d
パラメータに置き換えることができます。
2. フォルダーが存在するかどうかを確認します
if [ -d "relative/path/to/directory" ]; then
echo "Directory exists."
else
echo "Directory does not exist."
fi
上記の例では、relative/path/to/directory を、確認したい相対パス配下のフォルダー パスに置き換えます。-d パラメータは、パスがディレクトリであるかどうかを確認するために使用されます。ディレクトリが存在する場合は「ディレクトリが存在します。」と出力され、そうでない場合は「ディレクトリが存在しません。」が出力されます。
または
if [[ -d "relative/path/to/directory" ]]; then
echo "Directory exists."
else
echo "Directory does not exist."
fi
角括弧 [] とは異なり、[[ はより多くの機能と柔軟性を提供し、条件付きテストでより一般的に使用されます。
または
if test -d "relative/path/to/directory"; then
echo "Directory exists."
else
echo "Directory does not exist."
fi
テストコマンドをそのまま条件判定に使用することもできます。
注: 上記の例のパスは、現在の作業ディレクトリを基準とした相対パスです。スクリプト内で作業ディレクトリまたは相対パスが正しく設定されていることを確認してください。絶対パスまたはパス変数を渡す場合は、relative/path/to/directory を、確認するフォルダー パスまたはパス変数に置き換えます。
3. 文字列が等しいかどうかを判断する
1. 比較には 2 つの等号を使用します ==
。
str1="hello"
str2="world"
if [ "$str1" == "$str2" ]; then
echo "Strings are equal."
else
echo "Strings are not equal."
fi
上の例では、str1 文字列と str2 文字列を比較しています。2 つの文字列が等しい場合は、「文字列は等しい。」を出力し、そうでない場合は、「文字列は等しくない。」を出力します。文字列にスペースや特殊文字が含まれている場合のエラーを防ぐために、二重等号 == の前後で文字列変数を二重引用符で囲む必要があることに注意してください。
2. =
以下を比較するために使用します。
str1="hello"
str2="world"
if [ "$str1" = "$str2" ]; then
echo "Strings are equal."
else
echo "Strings are not equal."
fi
2 つの等号 == と同様に、1 つの等号 = を使用して文字列比較を実行することもできます。それらの機能は同じです。
注: 等号 = または二重等号 == は、シェルでの文字列比較に使用される演算子です。代入演算子と混同しないでください。
4. 前のコマンドが正常に実行されたかどうかを確認します
1. 前回のコマンドが正常に実行されたかどうかを確認します。
シェル スクリプトでは、特殊変数 $? を使用して、前のコマンドが正常に実行されたかどうかを判断できます。この変数は、前のコマンドの終了ステータス コードを保持します。
通常、コマンドが正常に実行された場合は終了ステータス コード 0 が返され、実行が失敗した場合は 0 以外の終了ステータス コードが返されます。
command
if [ $? -eq 0 ]; then
echo "Command executed successfully."
else
echo "Command failed to execute."
fi
上記の例では、command コマンドが最初に実行されます。次に、 $?
変数の値を確認して、実行が成功したかどうかを判断します。終了ステータス コードが 0 の場合は「コマンドが正常に実行されました。」が出力され、それ以外の場合は「コマンドの実行に失敗しました。」が出力されます。
注:$?
変数の値は、特定のエラー メッセージではなく、前のコマンドの終了ステータス コードのみを表します。
さらに詳細なエラー情報が必要な場合は、コマンドの出力を確認するか、コマンドの出力をログ ファイルにリダイレクトできます。
2. コマンドの出力を取得します。
シェル スクリプトでは、コマンドの出力を取得する方法がいくつかあります。
バッククォート (``)
または $()
演算子を使用します。
output=`command`
echo "$output"
または
output=$(command)
echo "$output"
上記の例では、command は実行される特定のコマンドであり、 $()
バッククォートまたは演算子を使用してラップされます。これによりコマンドが実行され、その出力が出力変数に保存されます。その後、エコーまたはその他の手段を使用して、変数の出力を表示できます。
または
リダイレクト記号を使用します >
。
command > output.txt
上記の例では、command は実行される特定のコマンドであり、 >
その出力はリダイレクト シンボルを使用して Output.txt ファイルにリダイレクトされます。この方法を使用すると、出力は端末に直接表示されません。
または
パイプ記号を使用します |
。
command1 | command2
一般:
ls | grep 'work'、現在のディレクトリに作業があるかどうかを確認します
ps -ef | grep 'com.android'、現在のプロセスに Android が存在するかどうかを確認します
上記の例では、command1 の出力が command2 の入力になります。パイプ記号を使用すると、あるコマンドの出力を別のコマンドに渡して処理できます。必要に応じて、複数のコマンドをパイプラインで接続できます。
5. 文字列が空かどうかを判断します
1. シェル スクリプトで、文字列が空かどうかを判断するには、次の方法を使用できます。
パラメータを使用します -z
。
str=""
if [ -z "$str" ]; then
echo "String is empty."
else
echo "String is not empty."
fi
上の例では、 str
文字列を空の文字列に設定します。次に、 -z
パラメーターを使用して文字列が空かどうかを確認します。文字列が空の場合は「文字列が空です。」を出力し、それ以外の場合は「文字列が空ではありません。」を出力します。
または
パラメータを使用します -n
。
str=""
if [ -n "$str" ]; then
echo "String is not empty."
else
echo "String is empty."
fi
対照的に -z
、 -n
パラメーターを使用すると、文字列が空でないかどうかを確認できます。文字列が空でない場合は「文字列が空ではありません。」を出力し、それ以外の場合は「文字列が空です。」を出力します。
または
文字列の長さを比較に使用します。
str=""
if [ ${#str} -eq 0 ]; then
echo "String is empty."
else
echo "String is not empty."
fi
${#str}
str
文字列の長さを 取得することを表します 。演算子を使用して -eq
文字列の長さを比較し、それらがゼロかどうかを確認します。文字列の長さがゼロの場合は「文字列が空です。」を出力し、それ以外の場合は「文字列が空ではありません。」を出力します。
注: 上記の例では、str
変数は空の文字列です。これは、チェックする実際の文字列変数に置き換えることができます。