ホームページ >運用・保守 >Linuxの運用と保守 >Bash の ${} と $() の違いは何ですか
Linux などの GNU ベースのオペレーティング システムは、ほとんどのコンピューティング タスクと目標を達成するために、Bash と呼ばれるコマンド言語インタープリターまたはシェルに依存しています。
Bash は Bourne Again Shell の略称で、Bourne Again Shell は Bourne Shell (つまり Steven Bourne が発明したもの) に敬意を表したダジャレ名です。互換性の点では、Bash と sh は完全に一致します。 C シェル ( csh ) および Korn シェル ( ksh ) に見られる便利な機能も、このシェル言語インタープリターに含まれています。
実装の面では、Bash は IEEE POSIX 仕様 (IEEE 標準 1003.1) のツール部分と IEEE POSIX シェルに準拠することを目指しています。したがって、インタラクティブなプログラミング ツールとして、Bash は sh よりも機能が向上しています。
Linux やその他の GNU ベースのオペレーティング システムのユーザーは、主要なコマンド言語インタープリタとして Bash のみに依存する必要はありません。これは、これらのシステムには csh などのシェルのバージョンも事前にパッケージ化されているためです。移植性などの独自のシェル特性により、Bash はデフォルトの Linux シェルとしてのみ使用されるように構成されています。
Bash 環境に関連するこれら 2 つのプロパティを比較するには、$() を繰り返す必要があります。 $(command)
と ${}to ${parameter}
。したがって、これら 2 つの Bash エンティティを定義してみることができます。
$(コマンド)
Bash でのコマンド置換が含まれます。具体的には、コマンド部分 in$(command)
が実行され、その出力がキャプチャされて標準出力に出力されます。
牛逼啊!接私活必备的 N 个开源项目!赶快收藏
$(command)
の背後にある構文はトークン レベルです。端末に現在の日付を出力するように設計された次のコマンドを実行することを検討してください。
echo "今天是 $(date). LinuxMi.com 又是美好的一天。"
在 Linux 中打印日期
上述执行可以用以下方式解释。首先,执行 date 命令并将其输出作为参数包含在 echo 命令中。
在这里,我们可以假设命令替换在重新包含在主 shell 之前在单独的子 shell 中执行。
${parameter}
在Bash中涉及参数替换。根据 Bash 手册页,参数是一个值存储实体。参数实体可以与名称、数字或特殊字符相关联。
大括号{}
暗示我们在处理位置参数,或者在使用的参数(参数值)后面是一个与参数名称不相关的非解释性字符,例如${animal}s
。
至于位置参数,可以用一个或多个数字来表示(单个数字 0 除外)。因此,如果我们有一个名为$variable_name
的变量,则可以使用参数 替换${parameter}
来检索关联的变量值。
考虑以下变量声明命令:
$ animal=lion
让我们调用 animal 变量以尝试将变量值复数:
$ echo $animals
在命令中声明变量
在标准输出中不会打印任何内容,因为 Bash 不理解变量$animals
。但是,我们可以通过如下方式使用参数替换方法成功调用我们的$animals
变量:
$ echo ${animal}s
在命令中调用变量
在某些情况下,感叹号可能会在参数替换实现的第一个左大括号之后出现。在这种情况下,就会出现变量间接的概念。另外,搜索公众号Linux就该这样学后台回复“猴子”,获取一份惊喜礼包。
变量值优先于参数值,如下所示:
$ animal=lion $ echo $animal $ lion=rafiki $ echo $lion $ echo ${!animal}
参数值的优先级
希望本文能够说明 Bash 中$()
和${}
之间的区别。
以上がBash の ${} と $() の違いは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。