小编cod*_*ter的帖子

如何将输出附加到文本文件的末尾

如何将命令的输出附加到文本文件的末尾?

bash shell

419
推荐指数
12
解决办法
50万
查看次数

压扁不规则的列表列表

是的,我知道这个主题已经被覆盖过了(这里,这里,这里,这里),但据我所知,除了一个之外,所有解决方案都在这样的列表中失败:

L = [[[1, 2, 3], [4, 5]], 6]
Run Code Online (Sandbox Code Playgroud)

期望的输出是什么

[1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

或者甚至更好,一个迭代器.我看到的唯一适用于任意嵌套的解决方案可以在这个问题中找到:

def flatten(x):
    result = []
    for el in x:
        if hasattr(el, "__iter__") and not isinstance(el, basestring):
            result.extend(flatten(el))
        else:
            result.append(el)
    return result

flatten(L)
Run Code Online (Sandbox Code Playgroud)

这是最好的型号吗?我忽略了什么吗?任何问题?

python optimization list flatten

412
推荐指数
16
解决办法
12万
查看次数

向进程组的所有成员发送信号的最佳方法是什么?

我想杀死整个进程树.使用任何常用脚本语言执行此操作的最佳方法是什么?我正在寻找一个简单的解决方案.

linux shell signals process

409
推荐指数
16
解决办法
37万
查看次数

在Bash中管道输出和捕获退出状态

我想执行Bash中长时间运行的命令,都捕获它的退出状态,并且发球它的输出.

所以我这样做:

command | tee out.txt
ST=$?
Run Code Online (Sandbox Code Playgroud)

问题是变量ST捕获退出状态tee而不是命令.我怎么解决这个问题?

请注意,命令长时间运行并将输出重定向到文件以便以后查看它对我来说不是一个好的解决方案.

error-handling bash shell pipe

400
推荐指数
11
解决办法
16万
查看次数

在UNIX中grep一个选项卡

如何grep在Unix平台上的文件中选项卡(\ t)?

unix grep

399
推荐指数
11
解决办法
24万
查看次数

shell脚本可以设置调用shell的环境变量吗?

我正在尝试编写一个shell脚本,在运行时,将设置一些将在调用者的shell中保留的环境变量.

setenv FOO foo
Run Code Online (Sandbox Code Playgroud)

在csh/tcsh中,或

export FOO=foo
Run Code Online (Sandbox Code Playgroud)

在sh/bash中只在脚本执行期间设置它.

我已经知道了

source myscript
Run Code Online (Sandbox Code Playgroud)

将运行脚本的命令而不是启动新的shell,这可能导致设置"调用者"环境.

但这里有一个问题:

我希望这个脚本可以从bash或csh调用.换句话说,我希望任何一个shell的用户都能够运行我的脚本并改变他们的shell环境.所以'source'对我来说不起作用,因为运行csh的用户无法获取bash脚本,而运行bash的用户无法获取csh脚本.

有没有合理的解决方案不需要在脚本上编写和维护两个版本?

bash shell csh tcsh

396
推荐指数
8
解决办法
46万
查看次数

使用sudo时如何保持环境变量

当我使用sudo的任何命令时,环境变量不存在.例如,在设置HTTP_PROXY之后,该命令wget可以正常工作sudo.但是,如果我键入sudo wget它说它无法绕过代理设置.

linux sudo environment-variables

395
推荐指数
5
解决办法
28万
查看次数

在bash shell脚本中使用getopts来获取长和短的命令行选项

我希望使用我的shell脚本调用多种形式的命令行选项.

我知道getopts可以使用,但就像在Perl中一样,我无法对shell做同样的事情.

关于如何做到这一点的任何想法,以便我可以使用如下选项:

./shell.sh --copyfile abc.pl /tmp/
./shell.sh -c abc.pl /tmp/
Run Code Online (Sandbox Code Playgroud)

在上面,两个命令对我的shell意味着相同的东西,但使用getopts,我还没有能够实现这些?

bash getopt getopts command-line-arguments

390
推荐指数
17
解决办法
39万
查看次数

检查Bash数组是否包含值

在Bash中,测试数组是否包含某个值的最简单方法是什么?

编辑:在答案和评论的帮助下,经过一些测试后,我想出了这个:

function contains() {
    local n=$#
    local value=${!n}
    for ((i=1;i < $#;i++)) {
        if [ "${!i}" == "${value}" ]; then
            echo "y"
            return 0
        fi
    }
    echo "n"
    return 1
}

A=("one" "two" "three four")
if [ $(contains "${A[@]}" "one") == "y" ]; then
    echo "contains one"
fi
if [ $(contains "${A[@]}" "three") == "y" ]; then
    echo "contains three"
fi
Run Code Online (Sandbox Code Playgroud)

我不确定它是否是最佳解决方案,但似乎有效.

arrays bash

387
推荐指数
18
解决办法
47万
查看次数

385
推荐指数
13
解决办法
19万
查看次数