unexpected near error linux bash

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[*]}