パラメータが複数回拡張されるのを防ぎます

パラメータが複数回拡張されるのを防ぎます

別のスクリプトを書くスクリプトを書くコードがあります。

    cat > step1.sh <<-EOF  
        *other commands*  
            cat > step2.sh <<-EOF4 
                if [ -f PM.log ]; then
                    awk '/testphrase/{ f=1;r=""; next }f && /testphrase2/{f=0}f{ r=(r=="")? $0: r RS $0 }END{ print r }' PM.log > tmp1.log
                    checkfree=($(cat tmp1.log))
                    wait 
                    sed -i '$ d' tmp${mold}.log
                    wait
                fi
        EOF4
        qsub step2.sh
EOF
qsub step1.sh

5行目と6行目($(cat tmp1.log))で「$ 0」を使用してパラメータ拡張を防止したいと思います。 $の前に「\」を使用すると、パラメータ拡張が一度防止されることがわかります。

\$0 

ところで、このスクリプトは別のスクリプトで作成したものなので、二重、三重拡張を防止するために各スクリプトを作成しながらどうすればよいのか分かりません。

また、ファイルの終わり表示を編集できることもわかっていますが、ファイルの他のパラメータ(8行のMoldなど)を拡張したいので、そうすることもできません。

これらの特定の用語が毎回拡張されるのをどのように防ぐことができますか?

ベストアンサー1

行末マークを引用すると、これが行われます。最初の行に以下を引用してください。

cat > run1.sh <<-"EOF"

おすすめ記事