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