私のbashスクリプトは、printfを使用して別のbashスクリプトを作成します。bashスクリプト内の変数のエスケープ
printf "#!/bin/bash
HOME=${server}
file=gromacs*
file_name=\$(basename "\${file}")
date=\$(date +"\%m_\%d_\%Y")
for sim in \${HOME}/* ; do
if [[ -d \$sim ]]; then
simulation=$(basename "\$sim")
pushd \${sim}
cp \$file \${server}/\${results}/\${file_name}.\${simulation}.\${date}
echo "\${file_name}\ from\ \${simulation}\ has\ been\ collected!"
popd
fi
done" > ${output}/collecter.sh
は、ここでは、新しいバッシュの不完全になり、以下の部分が適切に
"\%m_\%d_\%Y"
を動作しませんでした日付変数
date=\$(date +"\%m_\%d_\%Y")
内の要素のescappiongに問題がありますprintfによって生成されたスクリプト。
どのように修正する必要がありますか?
ありがとうございます!
最初に '%'をエスケープする必要はありません。 –