korn シェルは for ループの出力値を配列に格納し、他のループに渡します。

korn シェルは for ループの出力値を配列に格納し、他のループに渡します。

Kornシェルの配列の助けが必要です。最初のforループから2番目のループに値を渡す必要があります。

最初のループは、/opt/IBM/db2/V11.5 /opt/IBM/db2/V11.5.8 /opt/IBM/db2/V11.5.8 を返します。

もしそうなら、「uniq」の値に感謝します。だから私は次のuniq値/opt/IBM/db2/V11.5 /opt/IBM/db2/V11.5.8を渡したいと思います。

しかし、私のスクリプトは最後の値だけを渡します。どんな助けでもいいでしょう。

db2instance=`ps -eaf | grep db2sysc |grep -v grep | awk '{print $1}' | sort`
for instance in ${db2instance}; do
       set -A db2dirpath
       db2dirpath=$(su - $instance -c db2level| grep "Product is installed at" | awk '{print $5}' | sed 's/"//g' | sed 's/.$//')
do
DIRDB2=$(echo ${db2dirpath[@]} | uniq)
for db2dir in "${DIRDB2[@]}"
do
      su - $instance -c "/db/data1/Ansible/db2dirpath.sh $instance $db2dir"
done

ベストアンサー1

この問題を解決できました。以下は実際のコードです。

db2instance=`ps -eaf | grep db2sysc |grep -v grep | awk '{print $1}' | sort`

DIRDB2=$(
for instance in ${db2instance}; do
      db2dirpath=$(su - $instance -c db2level| grep "Product is installed at" | awk '{print $5}' | sed 's/"//g' | sed 's/.$//')
      echo "$db2dirpath"
done
)
DIRPATH=$(echo "$DIRDB2" | sort -u | uniq)
for db2dir in $DIRPATH
do
      su - $instance -c "/db/data1/Ansible/db2dirpath.sh $db2dir"
done

おすすめ記事