Shell 将wc的结果存储在变量中

Shell 将wc的结果存储在变量中,shell,terminal,Shell,Terminal,我正在努力: y=$(wc -l email.txt) 它给出了行数和文件名email.txt。我不明白为什么 我正在使用ubuntu 13.04,您可以使用: y=$(wc -l < email.txt) | tr -d ' ') y=$(wc-l

我正在努力:

y=$(wc -l email.txt)
它给出了行数和文件名
email.txt
。我不明白为什么

我正在使用ubuntu 13.04,您可以使用:

y=$(wc -l < email.txt) | tr -d ' ')
y=$(wc-l
如果以文件名作为参数调用
wc
,它将打印该文件名以及文件中的行数、字数和字符数(如果使用
wc-l
,则仅打印行数)

如果运行
wc-l
,其输入从文件重定向,则
wc
命令无法访问文件名,因此无法打印文件名

特别是,如果使用
wc-l
,它只打印行数(后跟换行);至少在我使用的
wc
版本中,没有额外的空格

(这有点不幸;许多Unix文本处理工具的行为与
command file.txt
command
相同,但
wc
没有。)

因此,您所需要的是:

y=$(wc -l < email.txt)
sed
命令更改输出

1234 email.txt
公正

1234

对于除
wc
以外的其他工具,无论如何调用,都可以打印额外信息(例如,请参见
sha1sum

根据需要工作,但我想知道,如果我们甚至通过tr-d删除“”,然后,y中的实际值将是.txt文件中的行数???
tr-d''
已用于在
wc
命令生成的数字之前去除空格。或者,使用算术上下文:
((y=$(wc-l
)。这将自动忽略空格…这是工作,我有一个问题,除此之外,我想访问这个文本文件(email.txt)从脚本外部进入脚本,这意味着我可以访问这个文件,然后我可以用它进行计算。如何将此文件访问到脚本中可能是您应该将您的脚本发布到我可以更好地理解和建议的位置。刷新后,WC的结果可以指向const=null。您最近的编辑“修复”了代码(使用
WC-l
而不是
WC-l email.txt
)。请不要那样做;这意味着这个问题不再有任何意义。我已经回滚了你的编辑。@MennoGouw:我不明白这是什么意思。@KeithThompson关于抽水马桶的坏笑话,我猜。@MennoGouw:啊。在大西洋的这一边,这个词用得不多。继续。这是工作,我有一个问题,除此之外,我想访问这个文本文件(email.txt)从脚本外部进入脚本,这意味着我可以访问这个文件,然后我可以用它进行计算。如何将此文件访问到中script@user2831683:发布一个新问题。
1234