我有一个bash脚本,可以在一次执行之前根据一些参数在字符串中构建命令行。应该将连接到命令字符串的部分用管道分开,以利于通过每个组件的“数据流”。
一个非常简化的示例:
#!/bin/bash
part1=gzip -c
part2=some_other_command
cmd="cat infile"
if [ ! "$part1" = "" ]
then
cmd+=" | $part1"
fi
if [ ! "$part2" = "" ]
then
cmd+=" | $part2"
fi
cmd+="> outfile"
#show command. It looks ok
echo $cmd
#run the command. fails with pipes
$cmd
由于某些原因,管道似乎无法正常工作。当我运行此脚本时,我得到的错误消息通常与命令的第一部分(在第一个管道之前)有关。
所以我的问题是,是否可以通过这种方式构建命令,什么是最好的方式?
错误消息是什么?
—
CameronNemo 2014年
在我的脚本中(比这种简化要复杂一些),我得到“找不到文件”
—
Lennart Rolland 2014年
可以安全地假设
—
saiarcot895 2014年
infile
当前目录中存在该目录吗?
是。在我的代码中,它是wget -O-而不是文件。实际上,如果我只是复制连接的字符串并在终端中将其pasete,它将运行良好
—
Lennart Rolland