小编pfr*_*sen的帖子

如何判断"find"命令的输出是否为空?

如果输出为空,我想返回退出状态0,否则返回1:

find /this/is/a/path/ -name core.*
Run Code Online (Sandbox Code Playgroud)

bash pipe

14
推荐指数
2
解决办法
2万
查看次数

在find中使用-print0和-o

我使用-print0来修改find​​的输出以使用NULL终止符而不是换行符.但是,当使用find的-o(OR)函数时,我无法使其工作.

这样可以正常工作,它会打印出一个以换行符分隔的文件列表,这些文件不是由用户'pieter'拥有或者不是由'www-data'组拥有的:

find . ! -user pieter -o ! -group www-data
Run Code Online (Sandbox Code Playgroud)

但是当我将-print0附加到此时,我再也没有输出:

find . ! -user pieter -o ! -group www-data -print0
Run Code Online (Sandbox Code Playgroud)

然而,这工作正常:

find . ! -user pieter -print0
Run Code Online (Sandbox Code Playgroud)

我错过了什么?我已经尝试添加各种括号括号,但无济于事.

bash find

6
推荐指数
1
解决办法
1907
查看次数

暂时禁用bash中的'set-e'/'set -o errexit'?

我有一个脚本用于killall确保应用程序在启动之前尚未运行:

#!/bin/bash

set -e

some_command
another_command

sudo killall myapp # this causes the script to fail if myapp isn't running
sleep 10
myapp start
Run Code Online (Sandbox Code Playgroud)

但是,如果myapp未运行,killall将退出脚本,因为它返回错误.

解决此问题的一个选项是暂时禁用set -o errexit:

#!/bin/bash

set -e

some_command
another_command

set +e
sudo killall myapp # this causes the script to fail if myapp isn't running
set -e
sleep 10
myapp start
Run Code Online (Sandbox Code Playgroud)

但是,上述方法相当混乱.还有哪些其他选项暂时禁用set -e

linux bash ubuntu

3
推荐指数
1
解决办法
2072
查看次数

标签 统计

bash ×3

find ×1

linux ×1

pipe ×1

ubuntu ×1