tôi tình cờ gặp những vấn đề sau đây: Tôi đang viết một kịch bản bash Linux mà làm như sau:BASH: Strip mới dòng nhân vật từ chuỗi (đọc dòng)
- đọc dòng từ tập tin
- Strip các
\n
nhân vật từ ngày kết thúc của dòng chỉ đọc - Thực hiện lệnh đó là trong đó
Ví dụ: Commands.txt
ls
ls -l
ls -ltra
ps as
Việc thi hành các tập tin bash sẽ nhận được dòng đầu tiên, và thực hiện nó, nhưng trong khi hiện tại \n
, vỏ chỉ kết quả đầu ra "command not found: ls" Đó là một phần của kịch bản trông giống như
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
Đã nhận xét bạn có những điều tôi đã thử trước khi yêu cầu SO. Bất kỳ giải pháp? Tôi đập não của tôi cho các cặp vợ chồng cuối cùng của giờ trên này ...
bạn vừa thử '$ line' một mình chưa? – knittl
Tất nhiên là tôi đã làm. Nhưng nó nói "lệnh không được tìm thấy: ls " –
Tất cả những gì cần là: 'myline =" $ (echo -n "$ line") "' (với backquotes thay vì '$()' nếu bạn muốn) – jnylen