重定向操作符在shell提示符下工作但不在脚本中

问题描述 投票:-1回答:3

我有一个名为out1.csv的文件,其中包含表格数据。当我在终端中运行命令时,它可以工作:

cat out1.csv | grep -v ^$ | grep -v ^- > out2.csv

它读取文件并greps除了空白之外的所有行并以 - 开头,并将输出重定向到out2.csv

但是当我在脚本中放入相同的命令时,它不起作用。我甚至试过回声:

echo " `cat out1.csv | grep -v ^$ | grep -v ^- > out2.csv` " > out2.csv

我还试图指定文件的完整路径。但没有运气。

在脚本中,命令运行,但输出未按调试模式重定向到文件。

我错过了什么?

shell unix ksh
3个回答
0
投票

你重定向了两次

反引号中的命令写入文件并不打印任何内容。

你什么也没拿,把它写到文件中,覆盖之前的内容。


0
投票

在脚本中执行此操作的一种方法与在控制台#BETTER WAY中执行的操作相同 cat out1.csv | grep -v ^$ | grep -v ^- > out2.csv#无需回复它或将命令置于反引号中

You are redirecting twice

你正在尝试的另一种方式是 echo“`cat out1.csv | grep -v ^ $ | grep -v ^ - > out2.csv`”#不要再将输出重定向到out2.csv


0
投票

问题不是脚本,而是该脚本在此命令之前调用的sql脚本。两个命令实际上是正确的。

© www.soinside.com 2019 - 2024. All rights reserved.