On Mon, Feb 17, 2020 at 11:26 AM Alexandr Miloslavskiy via GitGitGadget <gitgitgadget@xxxxxxxxx> wrote: > diff --git a/t/t3903-stash.sh b/t/t3903-stash.sh > +test_expect_success 'stash handles large files' ' > + x=0123456789abcde\n && # 16 Did you intend for the \n in this assignment to be a literal newline? Every shell with which I tested treats it instead as an escaped 'n'. > + x=$x$x$x$x$x$x$x$x && # 128 > + x=$x$x$x$x$x$x$x$x && # 1k > + x=$x$x$x$x$x$x$x$x && # 8k > + x=$x$x$x$x$x$x$x$x && # 64k > + x=$x$x$x$x$x$x$x$x && # 512k > + x=$x$x$x$x$x$x$x$x && # 4m > + x=$x$x && # 8m > + echo $x >large_file.txt && > + unset x && # release memory By the way, are the embedded newlines actually important to the test itself, or are they just for human consumption if the test fails? I ask because I was curious about how other tests create large files, and found that a mechanism similar to your original (but without the pitfalls) has been used. For instance, t1050-large.sh uses: printf "%2000000s" X >large1 && which is plenty portable and (presumably) doesn't have such demanding memory consumption.