簡単なスクリプトを出力して出力をファイルにリダイレクトする必要がありますが、これを行うと:
printf "#!/bin/bash\ntouch /tmp/1234567890_$RUN" > /tmp/password-change-script_$RUN.sh
次のエラーが表示されます。
bash: !/bin/bash\ntouch: イベントが見つかりません
感嘆符をエスケープした場合:
printf "#\!/bin/bash\ntouch /tmp/1234567890_$RUN" > /tmp/password-change-script_$RUN.sh
その後、エスケープ文字がまだファイルに存在します。
cat /tmp/password-change-script_$RUN.sh
#\!/bin/bash
touch /tmp/1234567890_111
ちなみに、この特定のケースでは、 #!/bin/bash がファイルに含まれている必要があります。何らかの理由で、スクリプトを実行するバイナリ ファイルは、それ以外の場合はファイルを読み取れません。