Pages - Menu

2022年8月17日 星期三

[shellScript]shellscript簡單命令拆解

前言

在幫人設定goproxy代理伺服器時,本來在VM上跑。
但未來應該還是要再GKE上面執行的,所以先解析一下他這套是怎麼安裝的,
之後才有辦法在GKE上執行。

正文

#!/bin/bash
F="proxy-linux-amd64.tar.gz"
set -e
if [ -e /tmp/proxy ]; then
    rm -rf /tmp/proxy
fi
mkdir /tmp/proxy
cd /tmp/proxy

echo -e "\n>>> downloading ... $F\n"
manual="https://snail.gitee.io/proxy/manual/"
LAST_VERSION=$(curl --silent "https://mirrors.host900.com/https://api.github.com/repos/snail007/goproxy/releases/latest" | grep -Po '"tag_name":"\K.*?(?=")')
wget  -t 1 "https://mirrors.host900.com/https://github.com/snail007/goproxy/releases/download/${LAST_VERSION}/$F"

echo -e ">>> installing ... \n"
# #install proxy
tar zxvf $F >/dev/null
set +e
killall -9 proxy >/dev/null 2>&1
set -e
cp -f proxy /usr/bin/
chmod +x /usr/bin/proxy
if [ ! -e /etc/proxy ]; then
    mkdir /etc/proxy
    cp blocked /etc/proxy
    cp direct  /etc/proxy
fi
if [ ! -e /etc/proxy/proxy.crt ]; then
    cd /etc/proxy/
    proxy keygen -C proxy >/dev/null 2>&1 
fi
rm -rf /tmp/proxy
version=`proxy --version 2>&1`
echo  -e ">>> install done, thanks for using snail007/goproxy $version\n"
echo  -e ">>> install path /usr/bin/proxy\n"
echo  -e ">>> configuration path /etc/proxy\n"
echo  -e ">>> uninstall just exec : rm /usr/bin/proxy && rm -rf /etc/proxy\n"
echo  -e ">>> How to using? Please visit : $manual\n"

幾個不常用到的指令

  • tar :解壓縮

  • /dev/null ,這個在linux上面表示 黑洞,不做任何處理。
    所以 tar zxvf $F > /dev/null
    表示說,解壓縮$F的檔案,但不印出任何的訊息

  • set -e 在 "set -e"之後出現的代碼,一旦出現了返回值非零,整個腳本就會立即退出。

  • set +e 在 "set +e"之後出現的代碼,一旦出現了返回值非0,腳本還是會繼續執行

  • if -e …判斷此目標是否存在,存在回true

ref.
- “> /dev/null 2>&1” 的意思
- 學習筆記: shell 中的 set -e , set +e 用法
- What does “if [ -e $name ]” mean? Where $name is a path to a directory

沒有留言:

張貼留言