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