bash echo在没有文件名的bash变量中给出的文件行数
发布时间:2020-12-15 16:38:50 所属栏目:安全 来源:网络整理
导读:我在bash脚本中有以下三个结构: NUMOFLINES=$(wc -l $JAVA_TAGS_FILE)echo $NUMOFLINES" lines"echo $(wc -l $JAVA_TAGS_FILE)" lines"echo "$(wc -l $JAVA_TAGS_FILE) lines" 当脚本运行时,它们都产生相同的输出: 121711 /home/slash/.java_base.tag lin
我在bash脚本中有以下三个结构:
NUMOFLINES=$(wc -l $JAVA_TAGS_FILE) echo $NUMOFLINES" lines" echo $(wc -l $JAVA_TAGS_FILE)" lines" echo "$(wc -l $JAVA_TAGS_FILE) lines" 当脚本运行时,它们都产生相同的输出: 121711 /home/slash/.java_base.tag lines 121711 /home/slash/.java_base.tag lines 121711 /home/slash/.java_base.tag lines 也就是说文件的名称也被回显(我不想要的)。为什么这些scriplets失败,我应该如何输出一个干净: 121711 lines ?
使用您自己的数据的示例
可以通过使用来自JAVA_TAGS_FILE的重定向,而不是将文件名作为参数传递给wc,从而避免将文件名嵌入到NUMOFLINES变量中。例如: NUMOFLINES=$(wc -l < "$JAVA_TAGS_FILE") 说明:使用管道或重定向避免输出中的文件名 如果输入是从管道或重定向运算符获取的,wc实用程序将不会在其输出中打印文件的名称。考虑这些各种例子: # wc shows filename when the file is an argument $ wc -l /etc/passwd 41 /etc/passwd # filename is ignored when piped in on standard input $ cat /etc/passwd | wc -l 41 # unusual redirection,but wc still ignores the filename $ < /etc/passwd wc -l 41 # typical redirection,taking standard input from a file $ wc -l < /etc/passwd 41 正如你所看到的,wc打印文件名的唯一时间是作为参数传递的,而不是作为标准输入的数据。在某些情况下,您可能希望打印文件名,因此了解它将被显示的时间很有用。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |