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

时间:2017-12-20 08:01:44

标签: shell unix ksh

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

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

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

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

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

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

在脚本中,命令会运行,但输出不会根据调试模式重定向到文件。

我错过了什么?

3 个答案:

答案 0 :(得分:0)

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

您正在重定向两次

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

答案 1 :(得分:0)

您正在重定向两次

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

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

答案 2 :(得分:0)

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