我正在编写一个测试脚本来查看数组在 UNIX 脚本中如何工作。
#! /bin/bash
arr=(one two three)
echo "${arr[0]}"
我期望上面的内容会打印“one”,这是数组中的第 0 个位置
但是当我运行它时,bash test.sh
输出打印为
(one two three)
我认为它将变量视为字符串。 (我也尝试过sh test.sh
,但也没成功。)
当我尝试添加声明时,declare -a arr
它说not a valid identifier
uname -a
Linux XXXXXXX 2.6.32-754.31.1.el6.x86_64 #1 SMP Mon Jun 15 08:08:31 EDT 2020 x86_64 x86_64 x86_64 GNU/Linux
这里需要一些帮助。谢谢。
答案1
感谢您的评论。这些评论让我有了不同的想法。问题在于 EOL 转换。 .sh 文件是在 Windows 中创建的,并且 EOL 为“CR 和 LF”。我使用 notepad++ 转换为 UNIX 样式 EOL,仅是“LF”,问题就消失了。