一尘不染

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

linux

如果我有一个字符串变量,谁的值是"john is 17 years old"如何使用空格作为分隔符来对此进行标记?我会用awk吗?


阅读 203

收藏
2020-06-03

共1个答案

一尘不染

使用外壳程序对未加引号的变量的自动标记化:

$ 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命令造成严重破坏。

2020-06-03