印刷阵列在sh中



在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作为起点。

相关内容

  • 没有找到相关文章

最新更新