在bash中,如果您有一个数组arr
,并且要打印其所有值,则命令
echo ${arr[@]}
将解决这个问题。但是,在sh
中,此命令给出了bad substitution
错误。SH?
在POSIX SH规范中没有通用数组。您对任意变量的最接近的东西是由某些定界符分隔的字符串;通常,空格分开,但如果元素本身可以包含空格,则可以被其他字符分开。
$@
可以将其视为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"
夫妇问题:
- 您可以提供有关脚本的更多详细信息以及如何初始化数组?
- 您确定您实际上正在使用SH吗?在某些系统/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作为起点。