Tag: 打击

忽略xargs的空结果

考虑这个命令: ls /mydir/*.txt | xargs chown root 目的是将mydir中所有文本文件的所有者更改为root 问题是,如果在mydir中没有.txt文件,那么xargs会报错,说没有指定path。 这是一个无害的例子,因为正在抛出一个错误,但在某些情况下,就像我在这里需要使用的脚本一样,一个空白path被假定为当前目录。 因此,如果我从/home/tom/运行该命令,那么如果ls /mydir/*.txt没有结果,并且/home/tom/下的所有文件都将其所有者更改为root。 那么我怎么能让xargs忽略一个空的结果呢?

pipe道命令输出到tee,但也保存命令的退出代码

我有一个shell脚本,其中我包装一个命令(mvn干净安装),将输出redirect到日志文件。 #!/bin/bash … mvn clean install $@ | tee $logfile echo $? # Does not show the return code of mvn clean install 现在,如果mvn clean install失败并出现错误,我希望我的包装shell脚本也失败并出现该错误。 但是因为我把所有的输出pipe道都连接起来了,所以当我访问$?时,我无法访问mvn clean install的返回码$? 之后,它总是0(因为发球成功)。 我试图让命令写错误输出到一个单独的文件,然后检查,但错误输出mvn总是空的(好像只写入标准输出)。 我怎样才能保持mvn clean install的返回码,但仍然输出到一个日志文件?

意外的操作员错误

我的代码有什么问题? #!/bin/sh LOOK_FOR="$1" for i in `find $2 -name "*jar"`; do echo "Looking in $i …" #jar tvf $i | grep $LOOK_FOR > /dev/null jar tvf "$i" | grep "$LOOK_FOR" if [ $? == 0 ] ; then echo "==> Found \"$LOOK_FOR\" in $i" fi done #line 13 产量 wk@wk-laptop:$ sh lookjar.sh org/apache/axis/message/addressing/EndpointReference /media/0C06E20B06E1F61C/uengine/uengine Looking […]

bash获取string后的字符

我有一个string,看起来像这样: GenFiltEff=7.092200e-01 使用bash,我只想得到=字符后面的数字。 有没有办法做到这一点?