Bash:如何标记一个stringvariables?

如果我有一个stringvariables谁的价值是"john is 17 years old"我如何使用空格作为分隔符来标记这个? 我会用awk吗?

使用shell的自引用变量的自动标记:

 $ string="john is 17 years old" $ for word in $string; do echo "$word"; done john is 17 years old 

如果要更改分隔符,可以设置$IFS变量,它代表内部字段分隔符。 $IFS的默认值是" \t\n" (空格,制表符,换行符)。

 $ string="john_is_17_years_old" $ (IFS='_'; for word in $string; do echo "$word"; done) john is 17 years old 

(请注意,在第二个例子中,我在第二行添加了括号,这就创建了一个sub-shell,所以对$IFS的更改不会持久,通常不会永久更改$IFS因为它可能会造成严重的后果毫无防备的shell命令。)

 $ string="john is 17 years old" $ tokens=( $string ) $ echo ${tokens[*]} 

对于其他分隔符,如';'

 $ string="john;is;17;years;old" $ IFS=';' tokens=( $string ) $ echo ${tokens[*]} 
 $ string="john is 17 years old" $ set -- $string $ echo $1 john $ echo $2 is $ echo $3 17 

你可以尝试这样的事情:

 #!/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