このスクリプトでは、一重引用符、二重引用符、および>>の役割を理解していません。

このスクリプトでは、一重引用符、二重引用符、および>>の役割を理解していません。

この例は Linux ブックからのものです。

$ cat sort-wc
#!/bin/bash
# Sort files according to their line count
for f
do
    echo `wc -l <"$f» lines in $f
done | sort -n
$ ./sort-wc /etc/passwd /ect/fstab /etc/motd

私が理解していないのは、なぜバックティックと二重引用符が1つだけあり、その機能が何なのかということです>>>>ファイルに書き込むのではありませんか?

答え1

121ページの内容です。「ユーザーと管理者のためのLinuxの紹介」これは本文の印刷上のエラーです。このスクリプトはtuxcademyの他のテキストでも使用できますが、同じ印刷エラーがあります。

二重文字とは異なり、単一»文字>>はシェルスクリプトには影響しません。私の考えでは、この本のテキスト形式を指定するために使用された組版システムが何らかの"`理由で混同され、guillemet(コーナー引用符)でフォーマットされたか、ファイル«...»の単純なスペルエラー(引用符はプレーンテキストを引用するために使用されます)のようです。 )。

スクリプトは次のように読み取る必要があります。

#!/bin/bash
# Sort files according to their line count
for f
do
    echo `wc -l <"$f"` lines in $f
done | sort -n

...しかし、もっとよく書かれました。

#!/bin/sh
# Sort files according to their line count

for f; do
    printf '%d lines in %s\n' "$(wc -l <"$f")" "$f"
done | sort -n

バックティックは の古形式で、可変データを出力するのにより$( ... )適しています。printfさらに、変数の拡張、コマンドの置き換えなどを参照する必要があります。このスクリプトは機能を使用しないため、使用できbashます/bin/sh

関連:

関連情報