在 AIX 中使用数组时出错:第 81 行出现语法错误错误:“(”意外

在 AIX 中使用数组时出错:第 81 行出现语法错误错误:“(”意外

我正在尝试在 AIX 环境中执行一个 .sh 脚本,但它在下面一行给出错误

tableList = ( Value1 Value2 Value3 )

我尝试执行如下脚本:

  1. sh file1.ksh
  2. 我重命名了该文件,.ksh然后执行该文件sh ./file1.sh

答案1

shellsh通常不理解数组,因为它们不是 POSIX 标准的一部分。脚本的文件名是任意的,因此 a.sh.ksh文件名后缀没有任何意义。

另外,您的数组赋值语法有点错误(空格太多)。更正后,它看起来像

tableList=( Value1 Value2 Value3 )

请注意变量名称末尾和(.

为了能够运行您的脚本,您需要使用实现数组的 shell 来执行它,例如ksh93bashzshyash(取决于您正在使用的其他 shell 构造)。请注意,ksh在 AIX 上,ksh88为数组赋值的语法略有不同(它使用set -A tableList Value1 Value2 Value3)。

运行脚本的最佳方法是在脚本顶部ksh93添加一个- 行,指向解释器,然后使用 使脚本可执行。#!ksh93chmod +x scriptname

要在 AIX 上使用ksh93shell,脚本的第一行应如下所示

#!/usr/bin/ksh93

之后,运行脚本时不要在命令行上指定显式解释器:

./scriptname

答案2

AFAIR,AIX 使用基于 ksh88 的 POSIX shell 作为 /bin/sh

ksh88不支持

tableList=( Value1 Value2 Value3 )

这不是 POSIX 所要求的。

相关内容