Sie verwenden die falsche Dateibeschreibung. 1
ist stdout, 0
ist stdin.
Veränderung:
while read CMD <&1; do
zu:
while read CMD <&0; do
Und es wird aus der Datei richtig. Sie müssen dies jedoch nicht alles tun, da read
standardmäßig stdin verwendet wird:
while read CMD; do
Außerdem kann die -u
Option verwendet werden, um aus einem bestimmten Dateideskriptor zu lesen (zumindest in bash). So kannst du das auch tun:
while read -u 0 CMD; do