我想编写一个shell脚本,它接受来自标准输入的数据,将其写入文件然后对其执行某些操作.
出于这个问题的目的,让我们假设,我的脚本应该接受标准输入,将其写入in.txt,然后"foo"从中grep一个字符串并将输出写入out.txt.
我写了这个剧本.
cat > in.txt
grep foo in.txt > out.txt
Run Code Online (Sandbox Code Playgroud)
正如下面的一些答案中所解释的那样,人们可以使用
tee in.txt | grep foo > out.txt
Run Code Online (Sandbox Code Playgroud)
如果它是其他命令而grep不是从标准输入读取怎么办?它会成为猫的有效用途吗?
这是一个这样的例子chmod.
cat > in.txt
chmod -v 600 in.txt > out.txt
Run Code Online (Sandbox Code Playgroud)
要求在脚本结束后输入和输出都必须在文件中可用.
我想知道我的代码是否无用,cat或者如果这是一个完全有效的场景,cat可以这样调用吗?
此外,有没有办法重写这段代码而不使用cat它不会无用的任何命令?
注意:我关注适用于任何POSIX兼容shell的答案,而不仅仅是Bash或Linux.
它的有效用法是您想要cat的tee命令。它旨在将所有内容写入文件和stdout。
tee in.txt | grep foo > out.txt
Run Code Online (Sandbox Code Playgroud)