我开始使用bash编程,我想打印一个特定的数组位置,但是当我尝试时我得到了这个错误:错误替换
#!/bin/sh
user=`cut -d ";" -f1 $ultimocsv | sort -d | uniq -c`
arr=$(echo $user | tr " " "\n")
a=5
echo "${arr[$a]}" #Error:bad substitution
为什么?
答案 0 :(得分:0)
您正在使用不支持数组的“sh”。即使您使用“bash”也会得到相同的错误,因为“arr”不是数组。我不确定,如果“uniq”中的“-c”是你想要的。
我认为,这就是你要找的东西:
#!/bin/bash
mapfile -t arr < <( cut -d ";" -f1 $ultimocsv | sort -d | uniq )
a=5
echo "${arr[$a]}"
即使你的文件少于5个唯一行,这也不会给出错误,因为bash会为定义但空的数组返回一个空字符串。
它甚至可以与“uniq -c”一起使用,因为它将完整的行放在数组中。