新しい開発の代わりに「...」を使うか教える理由がありますか?

新しい開発の代わりに「...」を使うか教える理由がありますか?

私が理解しているように、ネストされたおよびエスケープの構文がより簡単でエラーの可能性が低いため、最新のコマンド代替構文は以前の$(...)ベース構文よりも優れています。`

/bin/shまた、現代で使用されているほとんどのシェルは以下をサポートしているようです$(…)

  • 強く打つ
  • 禁煙健康増進協会(したがってBusyBox、したがってほとんどの組み込みLinux)
  • スプリント
  • FreeBSD /bin/sh

$(…)IEEE 1003.1で指定されています。

だから私は非常に関連する2つの質問があります。

  • スクリプトが特定のレガシーシステムで実行する必要があることがわからない場合は、新しく開発されたシェルスクリプトで `を使用する理由はありますか?
  • $(...)UNIXプログラミング学生に書く方法だけを教え、他の開発者のシェルスクリプトを読むときに触れることができる古いスタイルの変形でのみ議論しない理由はありますか?`(非常に古いシステムを使用するか、非標準システムを使用している場合はこの変形)何らかの理由で)?

答え1

逆引用符が頻繁に使用されるため、この文法構造を教えるのが合理的です。

もちろん、$()スタイルコマンドの置き換えは、基本スタイル(および標準互換構成)で強調する必要があります。

バックティックがまだ人気があるのはなぜですか?入力するときに文字を保存し、目に負担をかけないためです。

答え2

私はそれらと一緒にプログラムするのではなく、シェルスクリプトで逆引用符の置き換えを使用することを役に立たない方法で教えることは大丈夫です(合意されているようです)。しかし、私はこれが本質的に悪いとは思わず(少なくともLinuxのコマンドラインの平均チュートリアルで判断した場合)、入れ子にならない可能性がある単純なスニペット/一行コードでまだ頻繁に使用されています。必要なもの。一度だけします。

バラよりコマンドを置き換える:バックティックまたはドル記号/括弧?

答え3

$()この構成は現実の世界では移植可能ではないため、使用を避けます。 4つの殻をリストアップしました。周囲のシェルよりも多くのバリエーション(サイズ順?)があります。 Solaris /bin/sh でスクリプトを実行し、どのように動作するかを確認します。

一方、既存のシステムのサポートはいつ中断されますか?仕事をする新しい方法で決して発展しないでしょうか。私はあなたが自分の判断を信じなければならないと考えており、以前の方法と比較して新しい方法の明確な利点を見ることができる場合はそれを選択してください...これはそのうちの1つではありません。 (個人的には背景がより明確であると思います。そうではありません。シェル変数の置換と混同しやすいです。

関連情報