我希望将读取的值与空格分开,然后根据数组的部分执行操作。更确切地说,如果第一个(如果为假则跳过其余部分)3个元素的语句将更改为使用另一个程序(查找数据库)将单词转换为数字,第4个和最后一个将检查是否存在非数字或大于64的数字,如果没有,则将它们全部组合在一起(我知道如何做),然后继续进行。我已经在谷歌等多个网站上花费了超过3个小时的时间来解决这个问题。
vzybilly@vzybilly-laptop:~/Desktop$ cat ./test.sh
#!/bin/bash
read -p "cmd: " IN
#OIFS=$IFS
#IFS=';'
#arr2=$IN
#a=$(echo $IN | tr " " "\n")
a=$(echo "$IN")
for i in $(seq 0 $((4 - 1))); do
echo "a[$i] = \"${a[$i]}\""
done
#IFS=$OIFS
exit 0
vzybilly@vzybilly-laptop:~/Desktop$ ./test.sh
cmd: cmd pers item num
a[0] = "cmd pers item num"
a[1] = ""
a[2] = ""
a[3] = ""
我想要的是:
vzybilly@vzybilly-laptop:~/Desktop$ ./test.sh
cmd: cmd pers item num
a[0] = "cmd"
a[1] = "pers"
a[2] = "item"
a[3] = "num"
a=$($IN)
而不是a=($IN)
?我的命令不应该执行任何东西;而$()
会执行一些操作。 - Amadan