[解決済み] 二重括弧、片括弧、中括弧の使い方
2022-03-14 18:20:49
質問
Bashでの括弧、括弧、中括弧の使い方と、その二重形式と一重形式の違いに戸惑っています。明確な説明はありますか?
どのように解決するのですか?
Bashで。
test
と
[
はシェルビルトインです。
は
ダブルブラケット
というシェルキーワードを使うことで、さらに機能を追加することができます。例えば
&&
と
||
ではなく
-a
と
-o
という正規表現マッチング演算子があり
=~
.
また、簡単なテストでは、二重の角括弧は単一の角括弧よりもかなり速く評価されるようです。
$ time for ((i=0; i<10000000; i++)); do [[ "$i" = 1000 ]]; done
real 0m24.548s
user 0m24.337s
sys 0m0.036s
$ time for ((i=0; i<10000000; i++)); do [ "$i" = 1000 ]; done
real 0m33.478s
user 0m33.478s
sys 0m0.000s
中括弧は、変数名の区切りに加えて、次のように使用します。 パラメータ展開 というようなことができるようになります。
-
変数の中身を切り捨てる
$ var="abcde"; echo ${var%d*} abc
-
と同様の置換を行います。
sed
$ var="abcde"; echo ${var/de/12} abc12
-
デフォルト値を使用する
$ default="hello"; unset var; echo ${var:-$default} hello
-
その他にも
また、ブレース展開で文字列のリストを作成し、ループで反復処理するのが一般的です。
$ echo f{oo,ee,a}d
food feed fad
$ mv error.log{,.OLD}
(error.log is renamed to error.log.OLD because the brace expression
expands to "mv error.log error.log.OLD")
$ for num in {000..2}; do echo "$num"; done
000
001
002
$ echo {00..8..2}
00 02 04 06 08
$ echo {D..T..4}
D H L P T
先頭のゼロとインクリメントの機能はBash 4以前にはなかったことに注意してください。
ブレースの展開について思い出させてくれたgboffiに感謝します。
二重括弧は 算術演算 :
((a++))
((meaning = 42))
for ((i=0; i<10; i++))
echo $((a + b + (14 * c)))
また、整数型変数や配列変数のドル記号を省略したり、演算子の周りにスペースを入れて読みやすくすることができます。
また、片かっこは 配列 のインデックスを表示します。
array[4]="hello"
element=${array[index]}
右辺の配列参照には(ほとんど/すべての)中括弧が必要です。
エフェメイアの のコメントで、サブシェルにも括弧が使われることを思い出しました。そして、配列を作成するために使用されることを思い出しました。
array=(1 2 3)
echo ${array[1]}
2
関連
-
[解決済み】ログアウトと再ログインをせずに.bashrcの設定を再読み込みする方法?
-
[解決済み] 一重引用符で囲まれた文字列の一重引用符をエスケープするには
-
[解決済み] PHPの文字列で、シングルクオートとダブルクオートの違いは何ですか?
-
[解決済み] シェル変数の周りに中括弧が必要なのはどんなとき?
-
[解決済み] Bashでは、一重の角括弧[ ]よりも二重の角括弧[[ ]]が好ましいのでしょうか?
-
[解決済み] Bashのシングルクォートとダブルクォートの違い
-
[解決済み] なぜリストの初期化(中括弧を使用)が他の方法より優れているのですか?
-
[解決済み】Scalaにおける中括弧と括弧の正式な違い、また、どのような場合に使用すべきなのか?
-
[解決済み】シングルクォートとダブルクォート('と"")について)
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] MacOSのbashターミナルでexport PS1="\u[\033[m]@[\033[32m]\h:\[\033[33;1m]\w[\033[m]\$" は何を意味していますか?
-
[解決済み] eval "$(docker-machine env default) "とする。
-
[解決済み] ssh / リモートbashコマンドでシングルクォート文字をエスケープするにはどうすればよいですか?
-
[解決済み] Bashを使ってプログレスインジケータを表示する [重複]。
-
[解決済み] bashで::演算子は何をするのですか?
-
[解決済み] パイプと二重パイプのどちらの OR 演算子を使うか?
-
[解決済み] ConcatenationとAppendの違いについて【終了しました
-
[解決済み] シェルスクリプトで整数式が期待されるエラー
-
[解決済み] "[0: コマンドが見つかりません]" in Bash [重複].
-
[解決済み] ターミナルでbashスクリプトを実行するにはどうすればよいですか?