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