我使用-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)
我错过了什么?我已经尝试添加各种括号括号,但无济于事.
我有一个脚本用于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?