script de shell untar

Tengo un directory en el que hay varios files tar como

tweets10_1.tar tweets10_2.tar tweets10_8.tar 

ahora quiero deshacer estos files y mantenerlos en una estructura de directorys como

 10_1 10_2 10_8 

He hecho un script de shell

 #!/bin/bash for string in `ls` ; do if [ $string == tweets10_*.tar*]; then length=${#string} folder=${string:6:$length-10} mkdir /mnt/filer01/round2/twitter/$folder tar -xvf $string -C /mnt/filer01/round2/twitter/$folder fi done 

esto me está dando error :3: [: missing ] Dime cuál es el problema

Solutions Collecting From Web of "script de shell untar"

 #!/bin/bash DIR="/mnt/filer01/round2/twitter" for file in tweets*.tar do NEWDIR=`echo $file | tr -d [a-zA-Z.]` mkdir $DIR/$NEWDIR tar -xvf $file -C $DIR/$NEWDIR done 

El [ command debe cerrarse usando a ] con un espacio principal :

 if [ $string == tweets10_*.tar* ]; then 

Además, por favor no hagas

 for x in `ls` 

En cambio, usa:

 for x in * 

O mejor:

 for x in tweets10_*.tar 

y omita el cheque por completo.

También puede extraer la parte 10_x más fácilmente:

 $ a=tweets10_8.tar; echo ${a//[az.]/} 10_8 

Aquí, estoy eliminando los alfabetos y el . .