zl624867243 发表于 2019-01-23 14:41

重定向作为参数传入为什么就无法输出?

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 能看到输出路径?


本友会机友会摄友会 发表于 2019-01-24 13:26

zl624867243 发表于 2019-01-24 23:56

回复 2# 本友会机友会摄友会

这个不符合要求吧 我想ps能看到 重定向符号 并且 能重定向出来

1cpuer 发表于 2019-01-26 09:31

本帖最后由 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没有详细定义

cjaizss 发表于 2019-01-28 11:48

需要再次解释,用eval

cjaizss 发表于 2019-01-28 11:56

本帖最后由 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
$

本友会机友会摄友会 发表于 2019-01-29 15:58

页: [1]
查看完整版本: 重定向作为参数传入为什么就无法输出?