【问题标题】:bash string, separated by spaces, to array用空格分隔的bash字符串到数组
【发布时间】:2023-04-01 22:47:02
【问题描述】:

我想读取一个读入的值并将其与空格分开,然后根据数组的各个部分执行操作。更准确地说,第一个(如果为假跳过休息)3 元素的 if 语句将使用另一个程序(查找数据库)从一个单词更改为一个数字,第 4 个和最后一个将检查上面是否有非数字或数字64,如果没有,那么它将把它们重新组合在一起(我知道该怎么做)然后继续。我已经在 Google 的多个网站上为此工作了 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"

【问题讨论】:

    标签: arrays string bash ubuntu ubuntu-10.04


    【解决方案1】:

    代替

    a=$(echo "$IN")
    

    使用

    a=($IN)
    

    【讨论】:

    • 不:vzybilly@vzybilly-laptop:~/Desktop$ ./test.sh cmd: cmd pers item num ./test.sh: line 9: cmd: command not found a[0] = "" a[1] = "" a[2] = "" a[3] = ""
    • 你有没有写a=$($IN)而不是a=($IN)?我的命令不应该执行任何操作;和$() 执行东西。
    猜你喜欢
    • 2012-01-30
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多