9

重複の可能性:
bash変数で指定されたファイルのbashエコー行数

テキスト ファイルの行数を画面に出力し、それを変数に格納する方法を考えていました。stats.txt というファイルがあり、実行するwc -l stats.txtと出力されます8 stats.txt

x = wc -l stats.txt数字だけを保存し、残りは視覚的なものだと思ってやってみましたが、うまくいきません:(

助けてくれてありがとう

4

2 に答える 2

18

これを行うための 2 つの POSIX 標準構文があります。

x=`cat stats.txt | wc -l`

また

x=$(cat stats.txt | wc -l)

どちらもプログラムを実行し、スクリプト内の呼び出しをコマンドの標準出力に置き換えます。この場合は$x変数に割り当てます。ただし、どちらも末尾の改行を削除することに注意してください (これは実際にここで必要なものですが、改行が必要な場合は危険な場合があります)。

また、2 番目のケースは簡単にネストできます (例: $(cat $(ls | head -n 1) | wc -l))。最初のケースでも実行できますが、より複雑です:

`cat \`ls | head -n 1\` | wc -l`

引用の問題もあります。これらの式は二重引用符で囲むことができますが、バックティックを使用すると、コマンド内で引用を続ける必要があり、括弧を使用すると「新しい引用グループを開始」できます。

"`echo \"My string\"`"
"$(echo "My string")"

これが役立つことを願っています=)

于 2012-10-04T16:46:24.807 に答える
3

あなたが試すことができます:

x=`cat stats.txt | wc -l`

または(another.anon.cowardのコメントから):

x=`wc -l < stats.txt`
于 2012-10-04T16:39:22.713 に答える