[解決済み】Bashの[]と[[]の違いは何ですか?[重複しています]
質問
bashのmanページを見てみると
[[
には、条件式を使用すると書いてあります。そこで、条件式のセクションを見てみると、以下の演算子と同じものがリストアップされています。
test
(そして
[
).
そこで疑問に思うのですが、この
[
と
[[
をBashで使うのですか?
どのように解決するのですか?
[[
は、bashが改良した
[
コマンドを使用します。bashをターゲットにしたスクリプトを書く場合、より良い選択肢となるよう、いくつかの機能強化がなされています。私のお気に入りは
-
シェルの構文的な機能なので、何か特別な動作で
[
は持っていない。もう変数を狂ったように引用する必要はありません。[[
は、空の文字列や空白を含む文字列をより直感的に処理することができます。例えば[
と書く必要があります。if [ -f "$file" ]
で、空文字列や空白を含むファイル名を正しく処理することができます。また
[[
は不要です。if [[ -f $file ]]
-
構文的な機能であるため、これによって
&&
と||
演算子でブーリアン・テストを、そして<
と>
は文字列の比較のために使用します。[
は、通常のコマンドであるため、これを行うことはできません。&&
,||
,<
および>
はコマンドライン引数として通常のコマンドに渡されることはありません。 -
を搭載しており、素晴らしい
=~
演算子で正規表現にマッチさせることができます。この演算子は[
と書くことができます。if [ "$answer" = y -o "$answer" = yes ]
と
[[
と書くことができます。if [[ $answer =~ ^y(es)?$ ]]
さらに、キャプチャしたグループを
BASH_REMATCH
. 例えば${BASH_REMATCH[1]}
は、上で "yes" と完全にタイプした場合は "es" となります。 -
パターンマッチ、別名グロビングを無料で手に入れることができます。もしかしたら、yesと入力する方法について、それほど厳密でないかもしれません。あるいは、ユーザーがy-anythingとタイプしても大丈夫なように。このような場合にも対応できます。
if [[ $ANSWER = y* ]]
bashの拡張機能なので、shと互換性のあるスクリプトを書くなら
[
. 必ず
#!/bin/bash
二重括弧を使用している場合は、スクリプトのシバング行を指定します。
こちらもご覧ください
関連
-
[解決済み] usr/bin/env bash」と「#!/usr/bin/bash」の違いは何ですか?
-
[解決済み] /bin/sh: apt-get: 見つかりません。
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] Bash prints リテラルの改行をエコーする \n
-
[解決済み] Bashスクリプトからプログラムが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み】Bashでファイル名と拡張子を抽出する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】shでJenkinsのステージから他のステージに変数を渡す
-
[解決済み] bashスクリプトでタブ文字をエコーする
-
npm err インストールエラーの解決策
-
[解決済み] bash file returns unexpected token `$'dottpr''
-
[解決済み] bashスクリプトでfindコマンドを使用する
-
[解決済み] Bashで変数が設定されているかどうかを確認する方法は?
-
[解決済み] Bashシェルスクリプトの入力引数の存在確認
-
[解決済み] Bashでは、一重の角括弧[ ]よりも二重の角括弧[[ ]]が好ましいのでしょうか?
-
[解決済み] 二重括弧、片括弧、中括弧の使い方
-
[解決済み】シェルの等式演算子(=、==、-eq)。