str="file.xxx.yyy.tar.gz"
str=`echo $str | sed -e 's/\..*$//'`
Не зацикливайся на встроенных функиях bash-a, в unix-е принято знать и пользовать кучу
разных внешних тулов, как мне кажеться... В общем см. grep, sed, awk.
>Пусть в переменная str="file.tar.gz". Как получить часть этой строки до первой точки, т.е. "file"?
prefix=`echo $str | cut -f 1 -d .`
echo $prefix
man cut
>str="file.xxx.yyy.tar.gz"
>str=`echo $str | sed -e 's/\..*$//'`
Однако:
str="строка с многими пробелами.работает.криво"
str=`echo $str | sed -e 's/\..*$//'`
test str != "строка с многими пробелами"
Вот так вот;-)
str="строка с многими пробелами.не.работает"
IFS=.
for i in $str ; do str=$i ; break ; done