スクリプトで「=:見つかりません」エラーが発生する

スクリプトで「=:見つかりません」エラーが発生する

考慮する:

#!/bin/ksh

db2 connect to MKTETLPS user ....... using ........

db2 "select count(*)  from etl.IDM_COLLAPSE_ORG_DEE c where c.IDM_PROCESS_STEP = 'I' and priority in ( '1','2','3','4','5') and c.update_ts < (current timestamp - 60 minutes) with ur"  > l.txt

$a = /is115/idm/dsproj/scripts/l.txt

        if [ $a -gt 0 ];
      then
        db2  "update etl.idm_collapse_org_dee
             set idm_process_step = NULL where priority in (
'1','2','3','4','5')
             and idm_process_step ='I'"
      else
          echo "All is well"
fi

上記のスクリプトを実行していますが、次のエラーが発生します。どうすれば解決できますか?

./CORCleanup1.sh[8]: =:  not found.
./CORCleanup1.sh[10]: test: 0403-004 Specify a parameter with this command.
All is well
DB20000I  The SQL command completed successfully.
DB20000I  The TERMINATE command completed successfully.

db2 connect reset


db2 terminate
exit

ベストアンサー1

変数の割り当てには、$および周囲のスペースを含めないでください=。私もその課題を二重引用します。したがって、変数の割り当ては次のようにする必要があります。

a="/is115/idm/dsproj/scripts/l.txt"

スクリプトをよく読むと、ファイルパス自体ではなく1.txtファイルの内容を保存したいようです。$aこれを行うには、次のようにタスクを使用できます。

read -r a < /is115/idm/dsproj/scripts/l.txt

read -rファイルの最初の行を読み、先行するスペースとタブを削除し(デフォルトと仮定$IFS)、指定された変数に保存します)


$aステートメントで変数を二重引用符で指定することもできますif

if [ "$a" -gt 0 ];

また、使用することができますhttps://www.shellcheck.net/スクリプトの構文を確認してください。

おすすめ記事