Bash:如何标记字符串变量?

新手上路,请多包涵

如果我有一个字符串变量,其值为 "john is 17 years old" 如何使用空格作为分隔符来标记它?我会使用 awk 吗?

原文由 Jake Wilson 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 762
2 个回答

使用 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

(请注意,在第二个示例中,我在第二行周围添加了括号。这将创建一个子 shell,以便对 $IFS 的更改不会持续存在。您通常不想永久更改 $IFS 因为它会对毫无戒心的 shell 命令造成严重破坏。)

原文由 John Kugelman 发布,翻译遵循 CC BY-SA 2.5 许可协议

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

对于其他分隔符,例如 ‘;’

 $ string="john;is;17;years;old"
$ OLDIFS="$IFS"
$ IFS=';' tokens=( $string )
$ echo ${tokens[*]}
$ IFS="$OLDIFS" # restore IFS

原文由 Diego Torres Milano 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题