这个例子是在一本 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
.
有关的: