重定向作为参数传入为什么就无法输出?
new.sh 如下:#!/bin/bash
res=$(echo "$3$4"|grep ">"|wc -l)
#cust_log=$(echo "$3" |awk -F'>' '{print $NF}'|sed s/[[:space:]]//g) #自定义的输出日志路径
#cmd=$(echo "$3" |awk -F'>' '{print $1}')
cmd=$3
uqs=$4
if [ $res == "1" ];then
echo "有重定向...."
echo $cmd
$cmd
else
echo "无重定向...."
$3 $4 > logs/${4}.log 2>&1 & #日志输出到指定路径,供php实时读取
fi
1.sh 如下:
#!/bin/bash
while true
do
date
sleep 1
done
我命令执行: ./new.sh 1 2 "/bin/bashwww/1.sh >logs/zdy.log" "pppp"
这样无法输出日志
为什么/bin/bashwww/1.sh >logs/zdy.log又有日志输出?
./new.sh 1 2 "/bin/bashwww/1.sh >logs/zdy.log" "pppp" 如何保证有日志输出并且 ps 能看到输出路径?
回复 2# 本友会机友会摄友会
这个不符合要求吧 我想ps能看到 重定向符号 并且 能重定向出来 本帖最后由 1cpuer 于 2019-01-26 10:08 编辑
./new.sh 1 2 "/bin/bashwww/1.sh >logs/zdy.log" "pppp"
./new.sh 1 2
"/bin/bashwww/1.sh >logs/zdy.log"
"pppp"
1 2 可理解字符或file or bian--x
2 3 域 双引号 "x" 字符串
1 + 2 + 3 没大意义
"/bin/bashwww/1.sh >logs/zdy.log"
简化之 "bash1.sh >logs/zdy.log"
也就是只在www目录有效
sh 1.sh 有输出
./new.sh 1 2 $( "/bin/bashwww/1.sh >logs/zdy.log") "pppp"
是这个木
uqs=$4
$3 $4 > logs/${4}.log
$4没有详细定义
需要再次解释,用eval 本帖最后由 cjaizss 于 2019-01-28 11:57 编辑
回复 5# cjaizss
下面是个实验
$ ls -l
total 4
-rwxr-xr-x 1 root root 43 1月28 11:56 1.sh
$ cat 1.sh
#!/bin/bash
CMD="echo test >testfile"
$CMD
$ ./1.sh
test >testfile
$ cat testfile
cat: testfile: No such file or directory
$ vi 1.sh
$ cat 1.sh
#!/bin/bash
CMD="echo test >testfile"
eval $CMD
$ ./1.sh
$ cat testfile
test
$
页:
[1]