linux - error near unexpected token
Bash: ¿Cómo tokenizar una variable de cadena? (4)
Si tengo una variable de cadena cuyo valor es "john is 17 years old"
¿cómo puedo tokenizar esto usando espacios como el delímetro? ¿ awk
?
Use la tokenización automática de shell de las variables sin comillas:
$ string="john is 17 years old"
$ for word in $string; do echo "$word"; done
john
is
17
years
old
Si desea cambiar el delimitador, puede establecer la variable $IFS
, que significa separador de campo interno. El valor predeterminado de $IFS
es " /t/n"
(espacio, pestaña, nueva línea).
$ string="john_is_17_years_old"
$ (IFS=''_''; for word in $string; do echo "$word"; done)
john
is
17
years
old
(Tenga en cuenta que en este segundo ejemplo agregué paréntesis alrededor de la segunda línea. Esto crea un subconjunto para que el cambio a $IFS
no persista. Por lo general, no desea cambiar $IFS
permanentemente ya que puede causar estragos en comandos de shell desprevenidos.)
puedes probar algo como esto:
#!/bin/bash
n=0
a=/home/file.txt
for i in `cat ${a} | tr '' '' ''/n''` ; do
str=${str},${i}
let n=$n+1
var=`echo "var${n}"`
echo $var is ... ${i}
done
$ string="john is 17 years old"
$ set -- $string
$ echo $1
john
$ echo $2
is
$ echo $3
17
$ string="john is 17 years old"
$ tokens=( $string )
$ echo ${tokens[*]}
Para otros delimitadores, como '';''
$ string="john;is;17;years;old"
$ IFS='';'' tokens=( $string )
$ echo ${tokens[*]}