次のスクリプトを1行でどのように書くことができますか?

次のスクリプトを1行でどのように書くことができますか?
#Gives a list of servers and their instance
for server instance in `/swb/local/scripts/swdList -p SMARTS -a A5SV_2017.1b -e 1 --type=instance --function=SAM --priority=1  | grep -v sis`
  do
    echo "===== $server - $instance ====="
    #Reason for single line, gotta run this on remote servers
    sudo ssh $server "`/swb/local/scripts/amprov /swb/local/scripts/estools/getProperty -s $sam_instance ICS_Notification Active SourceDomainName 2>/dev/null | grep "Partition-" | grep TRUE | awk '{print $1}' | sed 's/NOTIFICATION-Partition_//' | sed 's/_Down//' | sort`; do echo "===== Partition alarm "$alarming_partition" on "$sam_instance" ====="; ampm_instance=`echo $alarming_partition | awk -F\/ '{print $2}'`; for device_in_partition in `/swb/opt/InCharge9/IP/smarts/bin/dmctl -s ${ampm_instance} get Partition:: ${alarming_partition}::ConsistsOf | tr ' ' '\n' | grep '::' | awk -F\: '{print $3}'`; do echo -n $device_in_partition; vzb_qap=`/swb/opt/InCharge9/IP/smarts/bin/dmctl -s ${ampm_instance} get UnitaryComputerSystem::${device_in_partition}::vzb_qap`; echo -n  ",vzb_qap="$vzb_qap; device_alarm=`/swb/local/scripts/amprov /swb/local/scripts/estools/getProperty -s $sam_instance ICS_Notification Active SourceDomainName 2>/dev/null | grep TRUE | grep '_Down' | egrep -v '(Interface|BGP)' | grep $device_in_partition | awk '{print $1}'`; echo -n ",UCS_alarm="$device_alarm; echo; done;"
    echo
  done

PS:返信を送ってくれた皆さんに心から感謝します。残念ながら、減らしてあまり複雑ではないように努めましたが、それが私が書いたものです。

ベストアンサー1

;私はそれを一行にするためにスクリプトに自由に適用できるほど長い間泣きたい衝動を抑えることができました。

Y= [...]; for X in `shell command $Y`; do echo "=== "$X" on "$Y" ==="; Z=`echo $X | awk -F\/ '{print $2}'`; for W in `shell command ${Z} awk -F\: '{print $3}'`; do echo -n $W; V=`shell command ${Z} ${W}`; echo -n  ",V="$V; U=`shell command $Y`; echo -n ",T="$U; echo; done; echo; done

また、少なくともY= [...]有効なコマンドではないため動作しませんが、他の理由かもしれません。

おすすめ記事