# bash builtins only - 26 bytes Straight forward while using only `bash` builtins. IOW: No external helpers. The `X` file: trap "echo $((++i))" exit; (No final newline.) Proof of the pudding: $ bash <(cat X) 1 $ bash <(cat X X) 2 $ bash <(cat X X X) 3 Concat with or without newline inbetween: $ cat X X ; echo # added echo compensates missing \n only trap "echo $((++i))" exit;trap "echo $((++i))" exit; $ bash <(cat X X) 2 $ cat X <(echo) X ; echo trap "echo $((++i))" exit; trap "echo $((++i))" exit; $ bash <(cat X <(echo) X) 2 Ok... and now meditating about trickier ones... OmmmMMMmmmMMMmmm... ;-)