Как сказал Игнасио, вы не выполняете ls
, ваш список состоит из ls
и *.cpp
, который распространяется на все файлы, заканчивающиеся на .cpp
.Если вы хотите использовать вывод команды в виде списка, заключите его в обратные черты:
for cppfile in `ls *.cpp`
do
echo $cppfile
done
В bash вы можете использовать $(...)
вместо обратных черт:
for cppfile in $(ls *.cpp)
do
echo $cppfile
done
$(...)
имеет преимущество, заключающееся в том, что оно лучше вкладывается, но тэги более переносимы.