使用場景:前段時間交易所項目需要在伺服器上用到 根據websocket推送價格數據,在交易所內進行下單撤單處理,但是由於有多個交易對,在伺服器上部署時候,略顯繁瑣。(撮合引擎同樣有此問題,可以一併解決) 1:shell使用:在git項目後,這裡每個交易對單獨配一個文件,負責各自的交易處理,此處做項目 ...
使用場景:前段時間交易所項目需要在伺服器上用到 根據websocket推送價格數據,在交易所內進行下單撤單處理,但是由於有多個交易對,在伺服器上部署時候,略顯繁瑣。
(撮合引擎同樣有此問題,可以一併解決)
1:shell使用:在git項目後,這裡每個交易對單獨配一個文件,負責各自的交易處理,此處做項目下的目錄輪詢,並執行該目錄下的shell腳本
#!/bin/bash root=$(cd "$(dirname "$0")";pwd) #讀取當前目錄全部目錄名 dirs=`ls -a` for dir in ${dirs[@]} do #以下判斷做去除非項目目錄操作 if [ -d ${root}/${dir} ];then if [ ${dir} == '.' ];then continue fi if [ ${dir} == ".." ];then continue fi if [ ${dir} == "logs" ];then continue fi #這裡打開對應項目目錄,做初始化配置 cd ${root}/${dir} && ./update.sh fi done
2:shell的再次使用:在每個項目中需要替換一些配置文件中的個別字元串,作為當前項目的配置文件(解決了不需要再進入每一個項目中去修改配置文件的繁瑣)
#!/bin/bash root_dir=$(cd "$(dirname "$0")";pwd) #獲取當前操作系統名稱(用來區別linux和mac os系統) os=`uname -s` #獲取文件名字 file=${root_dir##*/} #配置文件所在位置 config_file="${root_dir}/app/config/development/environment.ini" #開始輪詢該文件 while IFS= read -r line do if [[ ${line} == *"otc_pair ="* ]];then #取出要替換的字元串 pair=$(echo ${line}|awk -F '=' '{print $2}'|sed 's/ //g') #替換該行字元串 這裡的邏輯是將變數 $pair 替換為項目文件名 $file if [ ${os} == 'Darwin' ];then #此sed命令在macos上 sed -i "" "s/$pair/$file/g" $config_file else #此sed命令在linux上 sed -i "s/$pair/$file/g" $config_file fi break fi done <"${config_file}"
至此完成shell的騷操作,其中關鍵可利用處我已貼出來,並做了註釋,
我再列下關鍵點:
1.sed命令的使用
2.獲取目前目錄中文件名
3. shell腳本的while和if else使用
4. 輪詢目錄中的目錄,並做其他命令操作