![Bash 脚本不会将 TEE 输出到子目录](https://linux22.com/image/18412/Bash%20%E8%84%9A%E6%9C%AC%E4%B8%8D%E4%BC%9A%E5%B0%86%20TEE%20%E8%BE%93%E5%87%BA%E5%88%B0%E5%AD%90%E7%9B%AE%E5%BD%95.png)
我有一个脚本,它通过逐行读取输入文件来运行多个curl 命令(每行都有不同的curl 参数)。我正在尝试将curl 命令的标准输出和标准错误发送到日志文件,并将它们显示到终端。很简单,对吧?
但由于某种原因,tee 不会将输出保存到我想要日志文件的子目录中。如果我指定脚本运行的目录,它将创建日志文件。
下面是相关代码:
if [[ -f $1 ]]
then
echo "Running requests from $1"
bname=`basename ${1} | awk -F\. '{print $1}'`
mkdir ./output/${bname}
echo "Will write output to ./output/${bname}"
while read line
do
let j=j+1
post_data=`perl -MURI::Escape -e 'print uri_escape($ARGV[0]);' "${line}"`
echo $line > ./output/${bname}/${bname}_${j}_request
curl -v -b cookie ${SvrProperties} -d "xmlrequest=$post_data" -o ./output/${bname}/${2}_${j}_response.xml 2>&1 | tee /output/${bname}/${2}_${j}_Run.log &
done < ${1}
elif [[ -d $1 ]]
then
for file in `ls $1`
do
echo "Running requests from $1/${file}"
bname=`basename ${file} | awk -F\. '{print $1}'`
mkdir ./output/${bname}
echo "Will write output to ./output/${bname}"
while read line
do
let i=i+1
post_data=`perl -MURI::Escape -e 'print uri_escape($ARGV[0]);' "${line}"`
echo $line > ./output/${bname}/${bname}_${i}_request
curl -v -b cookie ${SvrProperties} -d "xmlrequest=$post_data" -o ./output/${bname}/${2}_${i}_response.xml 2>&1 | tee /output/${bname}/${2}_${i}_Run.log &
done < ${1}/${file}
done
else
echo "Invalid input, neither file nor directory! Exiting..."
exit
fi
注意:我将请求回显到子目录以及保存curl 请求的输出的行全部工作。只有 tee 命令不起作用。
如果我编写如下内容,将创建日志文件:
curl -v -b cookie ${SvrProperties} -d "xmlrequest=$post_data" -o ./output/${bname}/${2}_${j}_response.xml 2>&1 | tee ${2}_${j}_Run.log &
但它不在我想要的位置。
答案1
难道真的是这样说的吗
curl -v -b cookie ${SvrProperties} -d "xmlrequest=$post_data" -o ./output/${bname}/${2}_${i}_response.xml 2>&1 | tee /output/${bname}/${2}_${i}_Run.log &
?如果有的话,.
应该是少了一个tee ./output/[..]
吧?