모든 것을 이스케이프 처리하여 한 줄짜리 쉘 스크립트를 변환하는 방법은 무엇입니까? 예를 들어 행 끝을 \ n으로 바꾸고 다른 백 슬래시 및 기타 필요한 항목을 두 배로 지정하십시오.필요한 것을 탈출하여 쉘 스크립트를 하나의 라이너로 변환 하시겠습니까?
#!/bin/bash
HOSTNAME=$hostname
DATA=""
RETRY=50
echo $HOSTNAME
sleep 1m
while true; do
while [ $RETRY -gt 0 ]
do
DATA=$(wget -O - -q -t 1 http://$HOSTNAME:8080/process)
if [ $? -eq 0 ]
then
break
else
if lsof -Pi :8080 -sTCP:LISTEN -t >/dev/null ;
then
echo "Server is already running"
else
echo "Server is not running so starting it"
/opt/abc/hello start
fi
let RETRY-=1
sleep 30
fi
done
if [ $RETRY -eq 0 ]
then
echo "Server is still down. Exiting out of shell script." >&2
exit 2
fi
echo "Server is up. Now parsing the process."
#grep $DATA for state
state=$(grep -oP 'state: \K\S+' <<< "$DATA")
[[ -z "$state" ]] && state=0
echo "$state"
#validate the conditions
if [[ "$state" == "DONE" || "$state" == "0" ]]; then exit 0; fi
#wait another 30 seconds
sleep 30
done
중 필요한 모든 일을 탈출하여 파이썬 또는 Linux를 사용하여 한 줄에 위의 스크립트를 변환 할 수있는 방법이 있나요?
왜 그게 좋을까요? 각 줄 바꿈은 세미콜론으로 바꿀 수 있습니다. – tripleee
'do','then' 및'else' 다음에';'는 사용할 수 없습니다. – Cyrus
@Cyrus 설명해 주셔서 감사합니다. 내 대답 업데이트, – tripleee