Wenn ich das richtig lese, versuchen Sie das eigentliche Text in eine Datei anhängen?
if [ `expr $MOD % 5` -eq 0 ]; then
Dann ist das Problem Ihre Befehlsstruktur. Sie haben dies verwendet:
echo if [ `expr $MOD % 5` -eq 0 ]; then
Dies ist eigentlich zwei Befehle, soweit die Shell betrifft, aufgrund der Semikolon. So ist es das gleiche wie:
echo if [ `expr $MOD % 5` -eq 0 ]
then
Da then
ist normalerweise nicht ein gültiger Befehl, und das ist außerhalb des Kontexts einer Schale bedingt (zB if
), wird die Schale nicht wissen, was damit zu tun .
Was Sie tun müssen, ist das ganze Ding als String zitieren und übergeben , dass Echo.
echo 'if [ `expr $MOD % 5` -eq 0 ]; then'
Mit Apostroph ('
) als doppelte Anführungszeichen ("
) ist wichtig. Wenn Sie double quote verwenden, wird das Bit in Backticks (expr $MOD % 5
) ausgewertet und nicht wie bisher an die Datei übergeben.
Er. Entfernen Sie das Echo? – melpomene
entfernen Sie dann in der Echozeile, um zu sehen, was es druckt –
Im Allgemeinen verwenden Sie '$ (...)' anstelle von backquotes, und verwenden '$ (($ MOD% 5))' anstelle des 'expr'-Befehls. 'echo 'wenn [$ (($ MOD% 5)) -eq 0]; dann ". – chepner