AIX環境で.shスクリプトを実行しようとしていますが、以下の行でエラーが発生します。
tableList = ( Value1 Value2 Value3 )
次のスクリプトを実行しようとしています。
sh file1.ksh
- ファイルの名前を変更し、
.ksh
ファイルを実行しました。sh ./file1.sh
答え1
シェルはsh
通常POSIX標準の一部ではないため、配列を理解していません。スクリプトのファイル名は任意であるため、a.sh
または.ksh
ファイル名のサフィックスは意味がありません。
また、配列割り当て構文が少し間違っています(スペースが多すぎます)。修正後の様子です
tableList=( Value1 Value2 Value3 )
で終わる変数名を参照してください(
。
スクリプトを実行するには、または同じ配列を実装するシェルを使用してスクリプトを実行する必要があります(ksh93
使用している他のシェル構成によって異なります)。 AIXでは、配列に値を割り当てる構文が少し異なります(を使用)。bash
zsh
yash
ksh
ksh88
set -A tableList Value1 Value2 Value3
スクリプトを実行する最善の方法は、ksh93
スクリプトの上部にインタプリタを指す行を追加してから、スクリプトを実行可能にすることです。#!
ksh93
chmod +x scriptname
AIXでシェルを使用するには、ksh93
スクリプトの最初の行は次のようになります。
#!/usr/bin/ksh93
次に、コマンドラインで明示的なインタプリタを指定せずにスクリプトを実行します。
./scriptname
答え2
AFAIR、AIXはksh88ベースのPOSIXシェルを/ bin / shとして使用します。
ksh88はサポートしていません
tableList=( Value1 Value2 Value3 )
これはPOSIXでは必要ありません。