Bashスクリプトでの括弧とバッククォートの使用について
Bashスクリプトでは、変数やコマンド実行結果をファイル名やログの出力として参照する必要があることが多く、スクリプトやシェルでは、バッククォートや括弧()を使って変数の内容を取得することができます。
例
例1
日付の出力を取得する
echo `date`
# output
Tue, Jan 05, 2021 15:21:23 CST
echo $(date)
# output
Tue, Jan 05, 2021 15:21:32 CST
バッククォートやブラケットを使うことで、コマンドの出力をスクリプトの入力にしたり、コマンドのパラメータを使って出力をフォーマットすることができます。
例2
年-月-日のフォーマットで日付を取得する
echo `date +%F`
# output
2021-01-05
echo $(date +%F)
# output
2021-01-05
議論する
Bashでは、バッククォートと括弧はコマンドの入力を表すので、スクリプトでは、バッククォートと括弧を使ってコマンドの実行と出力を得ることしかできず、スクリプト内で宣言された変数は得られない。代わりに、$と${}を使って、スクリプトで宣言された変数を取得することができますが、コマンドの入力は取得できません。
#! /usr/bin/bash
variable=name
# use `` to output variable
echo `variable`
# use $ to output variable
echo $variable
# use $() to output variable
echo $(variable)
# use ${} to output variable
echo ${variable}
実行の結果、エラーが報告される
. /test:line 6: 変数: コマンドが見つかりませんでした。
名称
. /test:line 12: 変数: コマンドが見つかりませんでした。
名称
概要
1). (ポイント)ソースコマンドと同様に、ファイルに実行権限があるかどうかにかかわらず、ファイルからコマンドを読み込んで正しく実行します。また,実行のためにサブシェルを生成するのではなく,現在のシェルの下で実行される(通常,「. /filename.sh" を使ってファイルを実行するのは、現在のシェルの下にサブシェルを生成してそれを実行するためです)。
2): このコマンドは何もしませんが、実行後に正しい終了コード、つまりexit 0を返します(passと同様)。
3)() は複数のコマンドを組み合わせて実行するもので、コマンドグループに相当する。
4) {}も複数のコマンドをまとめるという点では、()と同様である。両者の違いは、()は結果のサブシェルで実行されるのに対し、{}は現在のシェルで実行される点です。
5) [] は、test コマンドと同様に、値の比較やファイルの種類のチェックに使用します。
6) [[]]は[]の「拡張」バージョンで、複数のテストコマンドでサポートされているテストを組み合わせることができる。
(7) (())は数値演算専用で、式の評価値が0の場合は終了ステータスを1、0以外の場合は0にする。
Bashスクリプトにおけるブラケットとバッククォートの使用については、この記事がすべてです。Bashのブラケットとバッククオートの詳細については、BinaryDevelopの過去の記事を検索するか、以下の関連記事を引き続きご覧ください。
関連
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
Linuxシェルセレクトメニュー選択実装コード
-
整数計算のためのShell exprコマンドの実装
-
Rsyncはすべてのバックアップツールを殺す、あなたは手動で特定のディレクトリをブロックすることができますか?
-
Linux端末でコマンド出力をファイルに保存する方法
-
シェルスクリプトでJavaのjarプログラムを起動/停止する方法
-
NCバウンスシェルのいくつかの方式を説明
-
リナックスバウンスシェルの原理を解説
-
シェルスクリプトで.NET Coreアプリケーションを実行する方法
-
シェルのダブルクォートとシングルクォートの違いは何ですか?
-
linux オートメーション インタラクション スクリプト 説明