我们可以将 IFS 设置为一个数字范围吗?
Can we set IFS to a range of numbers?
我知道我可以让用户使用常见的 IFS,如 space、逗号等,但我希望能够让用户简单地输入他们的化学式(即 H2O)和将其拆分为元素及其编号。例如,如果 Na2V2O5 是他们的输入,我希望能够按如下方式存储此信息:
元素 1:Na 原子数:2
Element2: V Numberofatoms: 2
元素 3:O 原子数:5
是否可以按数字或什至寻找大写字母来分隔事物?这是一个 bash 脚本。
是的。
$ IFS=1234567890 read -a atoms <<< "Na2V2O5"
$ declare -p atoms
declare -a atoms=([0]="Na" [1]="V" [2]="O")
但是,数字本身并没有被保留;场分离器被简单地丢弃。
忠告:不要尝试在 shell.
中编写解析器
我知道我可以让用户使用常见的 IFS,如 space、逗号等,但我希望能够让用户简单地输入他们的化学式(即 H2O)和将其拆分为元素及其编号。例如,如果 Na2V2O5 是他们的输入,我希望能够按如下方式存储此信息:
元素 1:Na 原子数:2
Element2: V Numberofatoms: 2
元素 3:O 原子数:5
是否可以按数字或什至寻找大写字母来分隔事物?这是一个 bash 脚本。
是的。
$ IFS=1234567890 read -a atoms <<< "Na2V2O5"
$ declare -p atoms
declare -a atoms=([0]="Na" [1]="V" [2]="O")
但是,数字本身并没有被保留;场分离器被简单地丢弃。
忠告:不要尝试在 shell.
中编写解析器