|
场景:
mail/ 下有好多类似
2005 培训kpi .eml(24.4K).msg
fw_.eml
采 够 培训.07.eml(43k).msg
……
目的: 希望渠道.eml前面的字符串
for i in `ls -A mail/`
do
echo $i
done
存在以下几种情况,
[color="Navy"]1、 echo $i 或 echo "$i"时会以空格分开, 如:
2005
培训kpi
.eml(24.4K).msg
采
够
培训.07.eml(43k).msg
fw_.eml
[color="navy"]2、 for i in "`ls -A tst/`" ,echo $i 时
2005 培训kpi .eml(24.4K).msg 采 够 培训.07.eml(43k).msg fw_.eml
[color="navy"]3、 for i in "`ls -A tst/`" ,echo "$i" 时
2005 培训kpi .eml(24.4K).msg
采 够 培训.07.eml(43k).msg
fw_.eml
问题:
1、当我要取.eml之前的字符串时,
[color="navy"]尝试 echo ${i%.eml*}会
2005 培训kpi .eml(24.4K).msg 采 够 培训.07.eml(43k).msg fw_
"`ls -A tst/`" 成了一个独立的字符串
[color="navy"]尝试 echo "${i%.eml*}"
2005 培训kpi .eml(24.4K).msg
采 够 培训.07.eml(43k).msg
fw_
[color="navy"]2、for i in `ls -A tst/`;do echo ${i%.eml*};done
2005
培训kpi
采
够
培训.07
fw_
[color="Navy"]3、 expr index "$string" ".eml" 这好像只能匹配一个字符,也就是说只会找到第一个"."或"e" "m" "l"出现的位置,如何来准确匹配".eml"的位置呢
现在我有点糊涂了。 我要实现的目的,该如何通过shell实现呢? |
|