Die gesamte Zeile kann nicht in eine Datei zurückgegeben werden.

Die gesamte Zeile kann nicht in eine Datei zurückgegeben werden.

Ich kann nicht herausfinden, wie ich die folgende Zeile in eine Datei zurücksenden kann. Nur ein Teil davon wird in die Datei aufgenommen.

echo perl -e "printf(\"%.1lf%%\n\", ($reserved_block_count * 100.0 ) / $block_count);">>Show_Percent_Reserved_Blocks.sh

Wenn ich das folgende Skript ausführe, erhalte ich

andyk_~/Downloads$ Show_Percent_Reserved_Blocks.sh
/home/andy/bin/Show_Percent_Reserved_Blocks.sh: line 2: Block: command not found
/home/andy/bin/Show_Percent_Reserved_Blocks.sh: line 3: Reserved: command not found
syntax error at -e line 1, near "/ )"
Execution of -e aborted due to compilation errors.

#!/bin/bash
Block count:              421958912
Reserved block count:     4219589
perl -e "printf(\"%.1lf%%\n\", ($reserved_block_count * 100.0 ) / $block_count);"

Antwort1

Das Problem besteht darin, dass die Variablenreferenzen ( $reserved_block_count, $block_count) aufgrund der Verwendung von doppelten Anführungszeichen in der aktuellen (aufrufenden) Shell-Umgebung erweitert werden. Sie müssen das Ganze in einfache Anführungszeichen setzen:

echo 'perl -e "printf(\"%.1lf%%\n\", ($reserved_block_count * 100.0 ) / $block_count);"' >>Show_Percent_Reserved_Blocks.sh

verwandte Informationen