生成shell脚本时,控制台输出到文本文件中

时间:2017-12-01 09:06:58

标签: bash shell

我正在尝试将一组bash命令写入shell脚本文件,然后在服务器上执行。

它工作正常,直到我想将diff命令编写到脚本文件中,然后期望执行该脚本文件并将控制台输出写入* .txt文件。出于某种原因,* .txt文件不包含差异结果...我可以做些什么来解决这个问题?

A_DIR_1=methuselah/test1
A_DIR_2=methuselah/test2
A_DIR_3=methuselah/test3
B_DIR_1=methuselah/backup1
B_DIR_2=methuselah/backup2
B_DIR_3=methuselah/backup3
DST_DIR=methuselah/output

echo "touch $DST_DIR/output.txt" >> /tmp/$$.sh
for i in {1..3}
do
   A_DIR="A_DIR_$i"
   B_DIR="B_DIR_$i"
   echo "diff -qr ${!A_DIR} ${!B_DIR} >> $DST_DIR/output.txt" >> /tmp/$$.sh
done

cat /tmp/$$.sh
ssh meth@$SERVER 'sh -s' < /tmp/$$.sh
rm /tmp/$$.sh

1 个答案:

答案 0 :(得分:0)

看起来您希望在本地创建文件,但当然,它是在您发送到远程服务器的命令中,因此它就是#39正在被创造。

我认为你无论如何都不需要这些重定向。

# no need to touch, either
for loop in looopity loop; do
    echo "diff something"  # no redirect!
done |
ssh remoteserver >"$DST_DIR"/output.txt

如果您确实需要存储要发送到远程主机的命令,请在tee之前添加ssh