例えば以下のようなシェルスクリプト(hoge.sh)があるとします。

#!/bin/sh
gradle build #<- build はなくても結果は同じ
echo "hello"

プロンプトで

./hoge.sh

を行うと、ビルドを行い ハローといってくれます。

しかし、

cat hoge.sh | /bin/sh

を行うと、gradle buildはBUILD SUCCESSFULと表示されるのですが、ハローまで到達せずにスクリプトが終わっている模様です。

仮に、

cat hoge.sh | /bin/sh -i

としてみますと、

sh-4.2$ #!/bin/sh
sh-4.2$ gradle build
..... Gradleのメッセージ
sh-4.2$ exit

と出ています。このexitのせいでecho "hello"が無視されているようです。

用いているGradleは3.2.1で 2.1だと同じようにしてもexitは呼ばれずハローが帰ります。

スクリプトの2行目のgradle build に何か加えたり cat hoge.sh | /bin/shに何かしたりするなどしてexitを回避できないでしょうか?