我正在尝试在 AIX 环境中执行一个 .sh 脚本,但它在下面一行给出错误
tableList = ( Value1 Value2 Value3 )
我尝试执行如下脚本:
sh file1.ksh
- 我重命名了该文件,
.ksh
然后执行该文件sh ./file1.sh
答案1
shellsh
通常不理解数组,因为它们不是 POSIX 标准的一部分。脚本的文件名是任意的,因此 a.sh
或.ksh
文件名后缀没有任何意义。
另外,您的数组赋值语法有点错误(空格太多)。更正后,它看起来像
tableList=( Value1 Value2 Value3 )
请注意变量名称末尾和(
.
为了能够运行您的脚本,您需要使用实现数组的 shell 来执行它,例如ksh93
、bash
、zsh
或yash
(取决于您正在使用的其他 shell 构造)。请注意,ksh
在 AIX 上,ksh88
为数组赋值的语法略有不同(它使用set -A tableList Value1 Value2 Value3
)。
运行脚本的最佳方法是在脚本顶部ksh93
添加一个- 行,指向解释器,然后使用 使脚本可执行。#!
ksh93
chmod +x scriptname
要在 AIX 上使用ksh93
shell,脚本的第一行应如下所示
#!/usr/bin/ksh93
之后,运行脚本时不要在命令行上指定显式解释器:
./scriptname
答案2
AFAIR,AIX 使用基于 ksh88 的 POSIX shell 作为 /bin/sh
ksh88不支持
tableList=( Value1 Value2 Value3 )
这不是 POSIX 所要求的。