相关疑难解决方法(0)

在bash脚本中遇到"一元运算符期望"

在我的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:一元运算符预期"

有人可以帮我吗?

bash if-statement unary-operator

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

在失败时杀死管道中的下一个命令

我有一个流式备份脚本,我正在运行如下:

./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)

bash

7
推荐指数
1
解决办法
663
查看次数

标签 统计

bash ×2

if-statement ×1

unary-operator ×1