免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1051 | 回复: 6

[文本处理] 重定向作为参数传入为什么就无法输出? [复制链接]

论坛徽章:
8
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015小元宵徽章
日期:2015-03-06 15:58:18每日论坛发贴之星
日期:2015-06-08 22:20:00每日论坛发贴之星
日期:2015-06-08 22:20:00操作系统版块每日发帖之星
日期:2015-06-14 22:20:00数据库技术版块每日发帖之星
日期:2015-11-09 06:20:00数据库技术版块每日发帖之星
日期:2016-02-22 06:20:0015-16赛季CBA联赛之上海
日期:2017-01-01 23:58:53
发表于 2019-01-23 14:41 |显示全部楼层
new.sh 如下:
  1. #!/bin/bash

  2. res=$(echo "$3$4"|grep ">"|wc -l)
  3. #cust_log=$(echo "$3" |awk -F'>' '{print $NF}'|sed s/[[:space:]]//g)   #自定义的输出日志路径
  4. #cmd=$(echo "$3" |awk -F'>' '{print $1}')

  5. cmd=$3
  6. uqs=$4

  7. if [ $res == "1" ];then
  8.         echo "有重定向...."
  9.         echo $cmd
  10.         $cmd
  11. else
  12.         echo "无重定向...."
  13.         $3 $4 > logs/${4}.log 2>&1 &              #日志输出到指定路径,供php实时读取
  14. fi
复制代码
1.sh 如下:
  1. #!/bin/bash
  2. while true
  3. do
  4. date
  5. sleep 1
  6. done
复制代码

我命令执行: ./new.sh 1 2 "/bin/bash  www/1.sh >logs/zdy.log" "pppp"

这样无法输出日志

为什么/bin/bash  www/1.sh >logs/zdy.log  又有日志输出?

./new.sh 1 2 "/bin/bash  www/1.sh >logs/zdy.log" "pppp" 如何保证有日志输出并且 ps 能看到输出路径?


论坛徽章:
0
发表于 2019-01-24 13:26 |显示全部楼层
这应该是最基本的吧?

  1. a=/bin/bash  www/1.sh >logs/zdy.log
  2. ./new.sh 1 2 $a "pppp"
复制代码

论坛徽章:
8
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015小元宵徽章
日期:2015-03-06 15:58:18每日论坛发贴之星
日期:2015-06-08 22:20:00每日论坛发贴之星
日期:2015-06-08 22:20:00操作系统版块每日发帖之星
日期:2015-06-14 22:20:00数据库技术版块每日发帖之星
日期:2015-11-09 06:20:00数据库技术版块每日发帖之星
日期:2016-02-22 06:20:0015-16赛季CBA联赛之上海
日期:2017-01-01 23:58:53
发表于 2019-01-24 23:56 |显示全部楼层
回复 2# 本友会机友会摄友会

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

论坛徽章:
6
程序设计版块每日发帖之星
日期:2016-05-11 06:20:00操作系统版块每日发帖之星
日期:2016-05-12 06:20:00每日论坛发贴之星
日期:2016-05-12 06:20:00操作系统版块每日发帖之星
日期:2016-05-14 06:20:00程序设计版块每日发帖之星
日期:2016-05-31 06:20:00每日论坛发贴之星
日期:2016-05-31 06:20:00
发表于 2019-01-26 09:31 |显示全部楼层
本帖最后由 1cpuer 于 2019-01-26 10:08 编辑

./new.sh 1 2 "/bin/bash  www/1.sh >logs/zdy.log" "pppp"
./new.sh 1 2
"/bin/bash  www/1.sh >logs/zdy.log"
"pppp"
1 2 可理解字符或file or bian--x
2 3 域 双引号 "x" 字符串
1 + 2 + 3 没大意义
"/bin/bash  www/1.sh >logs/zdy.log"
简化之 "bash  1.sh >logs/zdy.log"
也就是只在www目录有效
sh 1.sh 有输出

./new.sh 1 2 $( "/bin/bash  www/1.sh >logs/zdy.log") "pppp"
是这个木
uqs=$4
$3 $4 > logs/${4}.log
$4没有详细定义

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
发表于 2019-01-28 11:48 |显示全部楼层
需要再次解释,用eval

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
发表于 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
$

论坛徽章:
0
发表于 2019-01-29 15:58 |显示全部楼层
回复 5# cjaizss

说的太好了,一语中的。
不过powershell是可以这样用的 $( "/bin/bash  www/1.sh >logs/zdy.log")

powershell中,有属性,而属性shell是没有的。
这些属性是引用型的。如 $a.b  ,若想把它取出来变成值类型。就要 $($a.b).
这相当于$c=$a.b ,然后传入 $c。就是eval的作用。

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

基于案例的 SQL 优化实战训练营

讲师:中电福富特级专家梁敬彬,参与本次课程培训,你将收获:
1. 能编写出较为高效的 SQL;
2. 能解决70%以上的数据库常见优化问题;
3. 能得到老师提供的高效的相关工具和解决方案;
4. 能举一反三,收获不仅仅是 SQL 优化。
现在购票享受8.8折优惠!
----------------------------------------
优惠时间:2019年3月20日前

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP