在bash中,如果你有一个数组arr
并且想要打印它的所有值,那么命令
echo ${arr[@]}
会做到这一点。但是,在sh
中,此命令会出现bad substitution
错误。在sh?
答案 0 :(得分:3)
POSIX sh specification中没有通用数组。你可以为任意变量提供的最接近的东西是由一些分隔符分隔的字符串;通常是空格分隔,但如果元素本身可以包含空格,则可以用其他字符分隔。
可以将 $@
视为POSIX sh中的数组,但由于只有一个这样的变量,因此它有点受限。您可以使用$@
更改set
的值,以便执行以下操作:
$ set -- one "two three" four
$ echo "$#"
3
$ echo "$1"
one
$ echo "$2"
two three
$ echo "$3"
four
$ printf '"%s" "%s" "%s"\n' "$@"
"one" "two three" "four"
答案 1 :(得分:0)
夫妻问题:
- 您能否提供有关脚本以及阵列初始化方式的更多详细信息?
- 你确定你真的在使用sh吗?在某些system / bin / sh上是一个符号链接,比如bash。
ls -l /bin/sh
lrwxrwxrwx 1 root root 4 2013-06-04 19:52 /bin/sh -> bash
我建议http://www.tutorialspoint.com/unix/unix-using-arrays.htm作为起点。