#!/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接管該進程,並立即返回。這個工作很好,多年來,我會有這個循環過程在後臺啓動工作,並立即回報「是