#!/bin/bash -eu
items="1 2"
for item in $items; do
(
echo one
false
echo two
) ||:
done
我希望false一行破坏子shell,但继续处理外层循环。即预期输出是 one
one
不过,我得到 one
two
one
two
仿佛||:代表正是后false
我有以下bash脚本(这是更复杂脚本的简化版本)。 #!/usr/bin/env bash
set -x
function execute() {
`$1` # same as $($1), gives "command not found" as do all the following:
# $1 # or ${1}
# eval "$1"
# e
可能重复: Spawn a background process in Ruby 花了几天在这个戳。直到最近,我一直在使用操作系统中的ruby 1.8.7。我会用反引号来调用子shell。子shell是一个bash包装器,它将调用在后台运行任何程序,stdout和stderr都关闭。然后,它不再让init接管该进程,并立即返回。这个工作很好,多年来,我会有这个循环过程在后台启动工作,并立即回报“是