[解決済み] Bashの${}と$()の違いについて [重複].
質問
2つの質問があり、それらを理解するためにいくつかの助けを必要としています。
-
の違いは何ですか?
${}
と$()
? というのはわかるのですが()
は、別のシェルでコマンドを実行し$
は変数に値を渡すことを意味します。 変数に値を渡すことを意味します。このことを理解するために、どなたか私を助けていただけませんか? を理解できますか?私が間違っている場合、私を修正してください。 -
もし私たちが
for ((i=0;i<10;i++)); do echo $i; done
でうまくいくのなら、なぜそれをwhile ((i=0;i<10;i++)); do echo $i; done
? 両者の実行サイクルの違いは何ですか?
どのように解決するのですか?
構文はトークンレベルなので、ドル記号の意味はそれが入っているトークンに依存します。例えば
$(command)
は現代の同義語で
`command`
の現代的な同義語で、コマンドの代入を意味します。
command
を実行し、その出力をここに置くことを意味します。つまり
echo "Today is $(date). A fine day."
を実行すると
date
コマンドを実行し、その出力を
echo
. 括弧は、サブシェルでコマンドを実行する構文とは無関係ですが、共通点があります (コマンドの置換も別のサブシェルで実行されます)。
これに対して
${variable}
は単なる曖昧さ回避のメカニズムなので、次のように言うことができます。
${var}text
の内容を意味するときに、変数
var
の後に
text
(となります。
$vartext
というのは、変数の内容が
vartext
).
は
while
ループは1つの引数を想定しており、trueかfalseと評価されます(実際には複数あり、最後の1つの真偽値が調べられます -- Jonathan Lefflerの指摘に感謝します)。偽の場合、ループはもう実行されません。
for
ループは項目のリストを反復し、それぞれを順番にループ変数にバインドします。あなたが言及した構文は、算術値の範囲に対するループを表現する 1 つの(かなり一般化された)方法です。
A
for
のようなループは、次のように言い換えることができます。
while
のループになります。このとき、式
for ((init; check; step)); do
body
done
は
init
while check; do
body
step
done
ループ制御を一箇所にまとめるのは読みやすさの点から理にかなっていますが、このように表現するとわかるように、ループ制御を行うための
for
ループの方が
while
ループよりもかなり多くのことを行います。
もちろん、この構文は Bash 固有のもので、古典的な Bourne シェルでは
for variable in token1 token2 ...; do
(もう少しエレガントな方法としては
echo
が含まれていないことを確認する限り、最初の例では
%
のようなフォーマットコードがないことを確認してください。
date +'Today is %c. A fine day.'
この孤立した例では大きな違いはありませんが、可能な限りプロセスを避けることは重要な考慮点です)。
関連
-
[解決済み] Bashスクリプトのソースディレクトリをスクリプト自体から取得するにはどうすればよいですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで通常のファイルが存在しないかどうかを判断する方法を教えてください。
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bash prints リテラルの改行をエコーする \n
-
[解決済み] シェルで、「2>&1」はどういう意味ですか?
-
[解決済み] Bashで文字列をデリミターで分割するには?
-
[解決済み] Bashでコマンドライン引数を解析するには?
-
[解決済み] すべてのディレクトリとサブディレクトリを再帰的にgrepするにはどうしたらいいですか?
-
[解決済み】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 実装 サイバーパンク風ボタン
おすすめ
-
ゼロからLinuxのisoイメージを作る方法(グラフィックチュートリアル)
-
deepin20のファイルを共有する方法を教えてください。Windowsでdeepinファイルを共有するためのヒント
-
virtualboxが仮想マシンを開けない場合は?linuxがvirtualboxにアクセスできない時の解決策
-
deepin20ターミナルでサーバーをリモート管理する方法
-
リクエスト・エンティティが大きすぎる問題の解決策
-
[解決済み] gzip: stdin: gzip 形式ではありません tar: 子プロセスはステータス 1 を返しました。エラーは回復不可能: 現在終了中
-
[解決済み] ディレクトリInodeと通常ファイルInodeの比較
-
[解決済み] すべてのディレクトリとサブディレクトリを再帰的にgrepするにはどうしたらいいですか?
-
[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
-
[解決済み] どのバージョンのPostgreSQLを使用していますか?