我不明白单反引号、双引号和 >> 在此脚本中的作用

我不明白单反引号、双引号和 >> 在此脚本中的作用

这个例子是在一本 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

这是来自第 121 页《面向用户和管理员的 Linux 简介》这是文本中的一个印刷错误。该脚本在 tuxcademy 的其他文本中也可用,但存在相同的印刷错误。

»字符与双字符不同>>,它在 shell 脚本中没有任何作用。我的猜测是,用于格式化本书文本的排版系统由于"`某种原因而被混淆,并将其格式化为 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.

有关的:

相关内容