考慮する:
#!/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/スクリプトの構文を確認してください。