なぜ$

なぜ$
root@raspberrypi:~# cat >test
echo succeed
root@raspberrypi:~# <test
root@raspberrypi:~# `<test`
succeed

原因は信号損失のようです。ところで、enterどのように送りますか?enter

ベストアンサー1

Bashや他のいくつかのシェルでは、`<test`次の略語です。`cat test`:

コマンドの置き換えは$(cat file)同じですが、より高速なコマンドを置き換えることができます$(< file

(-styleコマンドの置き換えも同様です`...`)。

これはあなたの命令を意味します

$ `<test`

同じですか?

$ `cat test`

- つまり、testコマンド置換式の代わりにファイルの内容をコマンドラインに挿入してから、コマンドの先頭にあるので、最初の単語をコマンド名の実行結果として使用する


一方、

$ <test

標準入力がtestファイルからリダイレクトされる空のコマンドです。POSIXに似たシェルから。本質的に: <test何もせずに成功するのと同じです。あまり役に立たないけど、〜するtest存在しない、または読み込めない場合、エラーが発生します。

>test作成またはトリミングの反対方向がtest役に立つ場合もあります。


`<test`Bash、zsh、kshなどの特殊な無効化動作は、コマンド置換が通常$(<test)同じコマンドの一般的な動作を複製する方法と一致しません。これは、次のコマンドの利便性とパフォーマンス機能です。

printf '%s@%s\n' $(<username.txt) $(<host.txt)

ファイルの内容をコマンドラインで読み取り、追加のプロセスを保存しようとしています(作成せずにcatシェル自体にファイルを読み取ることによって)。

違いはそれやそのようなものとは何の関係もありませんEnter。ただ特別なケースに過ぎません。私はあなたがやっていることを明示するのではなく、:useや同様の方法で$(<file)ファイルを実行することをお勧めしません。使用をお勧めしません。.sourceeval$(<file) 別の言葉緊密なループにあると確信していない限り、追加のcatプロセスを作成することが重要です。ここのように人々が混乱する可能性があるからです。これはあまり頻繁に起こるものではありません。

おすすめ記事