wpadłem na następujący problem: Piszę skrypt bash Linux, który wykonuje następujące czynności:BASH: Strip new-line z ciągiem znaków (czytaj linię)
- Odczyt linii z pliku
- Strip
\n
znak od końca linii po prostu odczytać - wykonać polecenie, które jest w środku
Przykład: commands.txt
ls
ls -l
ls -ltra
ps as
Wykonanie pliku bash powinien dostać pierwszą linię, i wykonać go, ale podczas obecnej \n
, powłoka po prostu wyjść „nie znaleziono polecenia: ls” Ta część skryptu wygląda to
read line
if [ -n "$line" ]; then #if not empty line
#myline=`echo -n $line | tr -d '\n'`
#myline=`echo -e $line | sed ':start /^.*$/N;s/\n//g; t start'`
myline=`echo -n $line | tr -d "\n"`
$myline #execute it
cat $fname | tail -n+2 > $fname.txt
mv $fname.txt $fname
fi
Skomentowałeś, że masz rzeczy, które wypróbowałem, zanim zapytam SO. Jakieś rozwiązania? Ja rozbijając sobie głowę dla ostatnich kilku godzin ponad to ...
czy po prostu próbował '$ line' sam? – knittl
Oczywiście, że tak. Ale mówi "polecenie nie znaleziono: ls " –
Wszystko, co jest potrzebne, to: 'myline =" $ (echo -n "$ line") "' (z cytatami zamiast '$()' jeśli chcesz) – jnylen