51

私は bash スクリプトの作成に非常に慣れていませんが、ここでの目標は、持っている .txt ファイルを取得し、txt ファイル内の単語の文字列を変数に割り当てることです。私はこれを試しました(正しい軌道に乗っているかどうかはわかりません)。

#!/bin/bash
FILE="answer.txt"
file1="cat answer.txt"
print $file1

これを実行すると、

Warning: unknown mime-type for "cat" -- using "application/octet-stream"
Error: no such file "cat"
Error: no "print" mailcap rules found for type "text/plain"

これを機能させるにはどうすればよいですか?

編集**に変更すると:

#!/bin/bash
    FILE="answer.txt"
    file1=$(cat answer.txt)
    print $file1

代わりにこれを取得します:

Warning: unknown mime-type for "This" -- using "application/octet-stream"
Warning: unknown mime-type for "text" -- using "application/octet-stream"
Warning: unknown mime-type for "string" -- using "application/octet-stream"
Warning: unknown mime-type for "should" -- using "application/octet-stream"
Warning: unknown mime-type for "be" -- using "application/octet-stream"
Warning: unknown mime-type for "a" -- using "application/octet-stream"
Warning: unknown mime-type for "varible." -- using "application/octet-stream"
Error: no such file "This"
Error: no such file "text"
Error: no such file "string"
Error: no such file "should"
Error: no such file "be"
Error: no such file "a"
Error: no such file "varible."

cat answer.txt と入力すると、このテキスト文字列は本来のように変数である必要があると出力されますが、変数でそれを実行するように bash を取得することはできません。

4

3 に答える 3

79

コマンドからの出力をキャプチャするには、バッククォートが必要です (おそらくechoの代わりに必要ですprint)。

file1=`cat answer.txt`
echo $file1
于 2013-01-02T04:06:41.467 に答える
72

bash では$(< answer.txt)と同等ですが$(cat answer.txt)、組み込まれているため、より高速で安全です。bash のマニュアルを参照してください。

これを実行していると思われますprint

NAME  
    run-mailcap, see, edit, compose, print − execute programs via entries in the mailcap file
于 2013-01-02T07:28:51.483 に答える
39

この$()構造は、コマンドから を返しますstdout

file_contents=$(cat answer.txt)
于 2013-01-02T04:07:07.963 に答える