1

私はこれをやろうとしています(実際の状況ではなく、単なる例です):

$ mkdir test; ( cd test; echo "foo" > test.txt ); cat test.txt
cat: test.txt: No such file or directory

ただし、cd testサブシェルの終了後にディレクトリの変更が元に戻されるため、失敗します。回避策とは何ですか? スクリプト.shファイルを使用できません。すべてを 1 つのコマンド ラインで行う必要があります。

4

3 に答える 3

5

サブシェルをスキップして、{ ... }代わりにブロックを使用します (または、この例はあまり意味がないため、ユースケースを説明してください):

$ find
.
$ mkdir dir; { cd dir; echo foo > test.txt; }; cat test.txt
foo
$ cd ..
$ find
.
./dir
./dir/test.txt
于 2013-08-29T13:32:36.990 に答える