bashコードブロックをサブシェルに入れる

bashコードブロックをサブシェルに入れる

これがうまくいくことを願っています。

echo "starting";
{
 cd "$HOME/foobar"
 echo "rolo" > file.txt
}
echo "ending";

サブシェルコードは中括弧の間に表示されますが、構文が正しくないようです。どうすればいいですか?

答え1

~によるとバッシュ文書グループ化には括弧または中括弧を使用できますが、括弧を使用するとサブシェルが作成されます。したがって、サブシェルでコマンドを実行するには、次のようにします。

echo "starting"
(
    cd "$HOME/foobar"
    echo "rolo" > file.txt
)
echo "ending"

ただし、この例では次のことができます。

echo "rolo" > "$HOME/foobar/file.txt"

関連情報