在我的bash脚本中,我有一个函数为后面的main函数的条件返回0或1(true或false).
function1 () {
if [[ "${1}" =~ "^ ...some regexp... $" ]] ; then
return 1
else
return 0
fi
}
Run Code Online (Sandbox Code Playgroud)
然后在我的主要功能:
main () {
for arg in ${@} ; do
if [ function1 ${arg} ] ; then
...
elif [ ... ] ; then
...
fi
done
}
Run Code Online (Sandbox Code Playgroud)
然而,当我运行这个脚本时它总是给我一个错误信息"[:function1:一元运算符预期"
有人可以帮我吗?
我有一个流式备份脚本,我正在运行如下:
./backup_script.sh | aws s3 cp - s3://bucket/path/to/backup
Run Code Online (Sandbox Code Playgroud)
该aws
命令以原子方式将stdin流式传输到云存储.如果在没有EOF的情况下中断进程,则上载将中止.
aws
如果./backup_script.sh
使用非零退出代码退出,我希望该进程被终止.
这样做的任何bash技巧?
编辑:您可以使用此脚本测试您的解决方案:
#!/usr/bin/env python
import signal
import sys
import functools
def signal_handler(signame, signum, frame):
print "Got {}".format(signame)
sys.exit(0)
signal.signal(signal.SIGTERM, functools.partial(signal_handler, 'TERM'))
signal.signal(signal.SIGINT, functools.partial(signal_handler, 'INT'))
for i in sys.stdin:
pass
print "Got EOF"
Run Code Online (Sandbox Code Playgroud)
例:
$ grep --bla | ./sigoreof.py
grep: unrecognized option `--bla'
usage: grep [-abcDEFGHhIiJLlmnOoqRSsUVvwxZ] [-A num] [-B num] [-C[num]]
[-e pattern] [-f file] [--binary-files=value] [--color=when]
[--context[=num]] [--directories=action] [--label] [--line-buffered]
[--null] [pattern] [file ...]
Got …
Run Code Online (Sandbox Code Playgroud)