如何将多个文件附加到单个文件中然后邮寄它们?

如何将多个文件附加到单个文件中然后邮寄它们?
if [[ unix = unix ]]
then
echo "they are same" > a.txt
else 
echo "they are not same" > b.txt
a.txt>>b.txt>c.txt
mail -s "comparison" [email protected] < /home/c.txt

我只是希望邮件正文表明它们相同或不同,但我没有得到预期的输出。

其中一个文件,或者a.txtb.txt被报告为command not found.

答案1

我不清楚你的脚本的意图是什么,但我将从标题“如何将多个文件附加到单个文件中?”回答你的主要问题......

重定向运算符(>>><等)不能单独作用于文件。它们处理命令的输入和输出。foo > bar并不意味着“bar用内容覆盖foo”。它的意思是“运行命令foo并用其输出覆盖bar”。 Andfoo >> bar表示“运行命令foo并将其输出附加到当前内容bar”。另外,你不能链接这些。foo > bar > baz没有任何意义。

如果你想连接多个文件的内容并将结果附加到另一个文件,那么您需要将>>运算符与命令结合使用cat

cat [OPTION]... [FILE]...

因此,使用您的文件名,将a.txt和附加b.txtc.txt您可以执行以下操作:

cat a.txt b.txt >> c.txt

由于您在评论中询问了类似的问题,因此这两个命令相当于单行版本:

cat a.txt >> c.txt
cat b.txt >> c.txt

答案2

这可以简化很多:

compare='not '
[[ unix = unix ]] && compare=''
echo "they are ${compare}the same" | mail -s "comparison" [email protected]

这将not(带有尾随空格)设置为变量的默认值$compare。如果两个字符串相同,则将 $compare 设置为空字符串。然后打印带有嵌入变量的消息并将其邮寄。

相关内容