検索
ホームページシステムチュートリアルLinuxbash シェルで $() と ${}、および $(()) と (()) を区別する方法

bash シェルで $() と ${}、および $(()) と (()) を区別する方法

Feb 15, 2024 am 10:40 AM
linuxLinuxチュートリアルレッドハットLinuxシステムLinuxコマンドLinux 認定レッドハットリナックスLinuxビデオ

bash shell 中如何区别 $()和${}和$(())和(())

$() と ${} の使用法:

bash シェルでは、コマンドの置換に $( ) と ` ` (バックティック) が使用されます。また、$() はどのシェルでも使用できます。bash2 を使用する場合は問題ありません...

${ }を見てください...実際には変数の置換に使用されます。一般に、$var と ${var} の間に違いはありません。ただし、 ${ } を使用すると、変数名のスコープをより正確に定義できます。

ここでは、いくつかの例を使用して、${ } の特殊な関数のいくつかを説明します。

変数を次のように定義するとします。

file=/dir1/dir2/dir3/my.file.txt

${ } を使用して相互に置換し、異なる値を取得できます:

${file#*/}: 最初の / と左側の文字列を削除します: dir1/dir2/dir3/my.file.txt

${file##*/}: 最後の / と左側の文字列を削除します: my.file.txt

${file#*.}: 最初の . とその左側の文字列を削除します: file.txt

${file##*.}: 最後の . と左側の文字列を削除します: txt

${file%/*}: 最後の / と右側の文字列を削除します: /dir1/dir2/dir3##​​

#${file%%/*}: 最初の / と右側の文字列を削除します: (null 値)

${file%.*}: 最後の . と右側の文字列を削除します: /dir1/dir2/dir3/my.file

${file%%.*}: 最初の . と右側の文字列を削除します: /dir1/dir2/dir3/my

記憶方法は次のとおりです:
#は左側を削除することです(#は評価プレートの$の左側にあります)

% は右側を削除することを意味します (% はディスク上の $ の右側にあります)

単一のシンボルが最小一致であり、2 つのシンボルが最大一致です。

${file:0:5}: 左端の 5 バイトを抽出します: /dir1

${file:5:5}: 5 バイト目の右側から連続する 5 バイトを抽出します: /dir2

変数値の文字列を置き換えることもできます:

${file/dir/path}: 最初のディレクトリを path:/

に置き換えます。

パス1/ディレクトリ2/ディレクトリ3/my.file.txt

${file//dir/path}: すべてのディレクトリを path:/

に置き換えます。

パス1/パス2/パス3/my.file.txt

${ } を使用すると、さまざまな変数の状態 (未設定、null 値、null 以外の値) に値を割り当てることもできます。

${file-my.file.txt}: $file が設定されていない場合は、戻り値として my.file.txt を使用します。 (NULL 値と非 NULL 値は処理されません)

${file:-my.file.txt}: $file が設定されていないか空の場合、戻り値として my.file.txt を使用します。 (null 以外の値は処理されません)

${file my.file.txt}: $file が null 値または null 以外の値に設定されている場合、my.file.txt が戻り値として使用されます。 (未設定の場合は何も処理しません)

${file: my.file.txt}: $file が空でない値の場合、戻り値として my.file.txt を使用します。 (設定がない場合や空の場合は処理を行いません)

${file=my.file.txt}: $file が設定されていない場合は、my.file.txt を戻り値として使用し、$file を my.file.txt に割り当てます。 (NULL 値と非 NULL 値は処理されません)

${file:=my.file.txt}: $file が設定されていないか空の場合、戻り値として my.file.txt を使用し、$file を my.file.txt に割り当てます。 (null 以外の値は処理されません)

${file?my.file.txt}: $file が設定されていない場合は、my.file.txt を STDERR に出力します。 (NULL 値と非 NULL 値は処理されません)

${file:?my.file.txt}: $file が設定されていないか空の場合、my.file.txt を STDERR に出力します。 (null 以外の値は処理されません)

上記の理解は、未設定、null、および非 null の 3 つの代入状態を明確に区別する必要があるということです。

一般的に、: は null に関係します。: が含まれていない場合、null は影響を受けません。: が含まれている場合、null も影響を受けます。

また、${#var} は変数値の長さを計算できます:

/dir1/dir2/dir3/my.file.txt がちょうど 27 バイトであるため、

${#file} は 27 を取得できます...

$(()) 目的:

整数演算に使用されます。

bash では、$(( )) の整数算術記号はおおよそ次のとおりです。

- * /: それぞれ「加算、減算、乗算、除算」。

%: 剰余演算

& | ^ !: それぞれ「AND、OR、XOR、NOT」演算。

###例:###

wangnc>a=5;b=7;c=2;

wangnc>エコー $a $b

5 7

wangnc>エコー $(( a b*c))

19

wangnc>エコー $(((a*b)/c))

17

wangnc>エコー $(($a $b*$c))

19

ワング>

$(( )) 内の変数名は、次のように $(( )) の前に $ 記号を追加するか、$ 記号を付けなくても置き換えることができます。

$(( $a $b * $c)) は 19

の結果も取得できます。

さらに、$(( )) は、異なるキャリー番号 (2 進数、8 進数、16 進数など) を使用して演算を実行することもできますが、出力結果はすべて 10 進数です。

echo $((16#2a)) 結果は 42 (16 進数から 10 進数へ)

###(())の用法:###

実際には、(( )) を使用するだけで変数値を再定義したり、テストを行ったりすることもできます。

a=5; ((a )) $a は 6

として再定義できます

a=5; ((a--)) の場合、a=4

a=5; b=7; ((a (( )) に使用される一般的なテスト記号は次のとおりです。

<:>:

より大きい

=:

以上

==:

に等しい

!=:

と等しくない

以上がbash シェルで $() と ${}、および $(()) と (()) を区別する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はLinux就该这么学で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
LinuxとWindowsのセキュリティモデルを比較対照します。LinuxとWindowsのセキュリティモデルを比較対照します。Apr 24, 2025 am 12:03 AM

LinuxとWindowsのセキュリティモデルには、それぞれ独自の利点があります。 Linuxは、柔軟性とカスタマイズ可能性を提供し、ユーザーの権限、ファイルシステム許可、Selinux/Apparmorを通じてセキュリティを可能にします。 Windowsはユーザーフレンドリーに焦点を当てており、WindowsDefender、UAC、Firewall、BitLockerに依存してセキュリティを確保しています。

ハードウェアの互換性は、LinuxとWindowsの間でどのように異なりますか?ハードウェアの互換性は、LinuxとWindowsの間でどのように異なりますか?Apr 23, 2025 am 12:15 AM

LinuxとWindowsはハードウェアの互換性が異なります。Windowsには広範なドライバーサポートがあり、Linuxはコミュニティとベンダーに依存します。 Linux互換性の問題を解決するために、RTL818888EUドライバーリポジトリのクローニング、コンパイル、インストールなど、ドライバーを手動でコンパイルできます。 Windowsユーザーは、パフォーマンスを最適化するためにドライバーを管理する必要があります。

LinuxとWindowsの間の仮想化サポートの違いは何ですか?LinuxとWindowsの間の仮想化サポートの違いは何ですか?Apr 22, 2025 pm 06:09 PM

仮想化サポートのLinuxとWindowsの主な違いは次のとおりです。1)LinuxはKVMとXenを提供し、優れたパフォーマンスと柔軟性を備えており、高いカスタマイズ環境に適しています。 2)Windowsは、友好的なインターフェイスを備えたHyper-Vを介した仮想化をサポートし、Microsoftソフトウェアに依存する企業に適したMicrosoft Ecosystemと密接に統合されています。

Linuxシステム管理者の主なタスクは何ですか?Linuxシステム管理者の主なタスクは何ですか?Apr 19, 2025 am 12:23 AM

Linuxシステム管理者の主なタスクには、システムの監視とパフォーマンスチューニング、ユーザー管理、ソフトウェアパッケージ管理、セキュリティ管理とバックアップ、トラブルシューティングと解像度、パフォーマンスの最適化、ベストプラクティスが含まれます。 1. TOP、HTOP、その他のツールを使用して、システムのパフォーマンスを監視し、チューニングします。 2。ユーザーADDコマンドおよびその他のコマンドを介して、ユーザーアカウントとアクセス許可を管理します。 3. APTとYUMを使用してソフトウェアパッケージを管理し、システムの更新とセキュリティを確保します。 4.ファイアウォールを構成し、ログを監視し、データバックアップを実行して、システムセキュリティを確保します。 5.ログ分析とツールの使用を通じてトラブルシューティングと解決。 6.カーネルパラメーターとアプリケーションの構成を最適化し、ベストプラクティスに従ってシステムのパフォーマンスと安定性を向上させます。

Linuxを学ぶのは難しいですか?Linuxを学ぶのは難しいですか?Apr 18, 2025 am 12:23 AM

Linuxの学習は難しくありません。 1.Linuxは、UNIXに基づいたオープンソースオペレーティングシステムであり、サーバー、組み込みシステム、およびパーソナルコンピューターで広く使用されています。 2。ファイルシステムと許可管理を理解することが重要です。ファイルシステムは階層的であり、許可には読み取り、書き込み、実行が含まれます。 3。APTやDNFなどのパッケージ管理システムは、ソフトウェア管理を便利にします。 4。プロセス管理は、PSおよびTOPコマンドを通じて実装されます。 5. MKDIR、CD、Touch、Nanoなどの基本的なコマンドから学習を開始し、シェルスクリプトやテキスト処理などの高度な使用法を試してください。 6.許可問題などの一般的なエラーは、SudoとChmodを通じて解決できます。 7.パフォーマンスの最適化の提案には、HTOPを使用してリソースを監視すること、不要なファイルのクリーニング、SYの使用が含まれます

Linux管理者の給与はいくらですか?Linux管理者の給与はいくらですか?Apr 17, 2025 am 12:24 AM

Linux管理者の平均年salは、米国で75,000〜95,000ドル、ヨーロッパでは40,000〜60,000ユーロです。給与を増やすには、次のことができます。1。クラウドコンピューティングやコンテナテクノロジーなどの新しいテクノロジーを継続的に学習します。 2。プロジェクトの経験を蓄積し、ポートフォリオを確立します。 3.プロフェッショナルネットワークを確立し、ネットワークを拡大します。

Linuxの主な目的は何ですか?Linuxの主な目的は何ですか?Apr 16, 2025 am 12:19 AM

Linuxの主な用途には、1。Serverオペレーティングシステム、2。EmbeddedSystem、3。Desktopオペレーティングシステム、4。開発およびテスト環境。 Linuxはこれらの分野で優れており、安定性、セキュリティ、効率的な開発ツールを提供します。

インターネットはLinuxで実行されますか?インターネットはLinuxで実行されますか?Apr 14, 2025 am 12:03 AM

インターネットは単一のオペレーティングシステムに依存していませんが、Linuxはその上で重要な役割を果たしています。 Linuxは、サーバーやネットワークデバイスで広く使用されており、安定性、セキュリティ、スケーラビリティに人気があります。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

MantisBT

MantisBT

Mantis は、製品の欠陥追跡を支援するために設計された、導入が簡単な Web ベースの欠陥追跡ツールです。 PHP、MySQL、Web サーバーが必要です。デモおよびホスティング サービスをチェックしてください。

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター