編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

サブシェルとグループコマンド

サブシェル

cd $HOME
(
  cd /tmp
  ls -1 > files.txt
)
pwd

サブシェルは子プロセスのシェルで実行されるため、サブシェル内のcd等は元のシェルに影響しない。従って、上のスクリプトの最終行のpwdコマンドは$HOMEを出力する。

グループコマンドの結果をファイルへ出力

{
  echo 1;
  echo 2;
  echo 3;
} > num.txt

グループコマンドを使わず同様にする場合

echo 1 > num.txt
echo 2 >> num.txt
echo 3 >> num.txt

サブシェルで同様にする場合

(
 echo 1;
 echo 2;
 echo 3;
) > num.txt

サブシェルとグループコマンドの違い

グループコマンド内で環境変数を設定(更新)した場合、ブロックを抜けても設定が残る。

echo "### SUBSHELL"
( foo=1; )
echo "foo: $foo"

echo "### GROUPING"
{ bar=1; }
echo bar: $bar

上の結果が以下。

### SUBSHELL
foo:
### GROUPING
bar: 1

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2012-05-20 (日) 19:07:47 (2160d)