如何通过转义所有内容将shell脚本转换为一行代码?例如:将行尾替换为\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
有没有办法通过转义所有必要的东西,用Python或Linux将上述脚本转换成一行代码?你知道吗
你为什么要那样?每个换行符都可以用分号替换,基本上就是这样。在
do
、then
、else
之后,不要加分号(感谢@Cyrus指出这一点!)你也需要删除评论。你知道吗hostname
被引用,但从未声明。http://shellcheck.net/给出了5个警告,尽管大多数都是良性的。if [ $? -eq 0 ]
反模式是我最讨厌的问题,我非常希望看到它得到修复。你知道吗此外,压痕是破损的,当然,如果你真的认为你需要这是一个一行。你知道吗
如果(如your deleted question)希望将其嵌入到Python脚本中,则无需用任何其他内容替换换行符。Python只需
'''triple-quoting it'''
就可以接受带有换行符的字符串(不过您需要一个r'''raw string'''
来避免Python解释和替换反斜杠)。你知道吗这里有分号。简略的,我相信你会明白的。你知道吗
相关问题 更多 >
编程相关推荐