Bash玩轉指令碼1之自己的指令碼安裝程式

2021-07-10 21:07:51 字數 3475 閱讀 9637

前言

還是理所當然的前言,我一直想找一套管理指令碼的「框架」,能讓自己雜亂的指令碼有點規整,無奈眼界尚淺,未能找到。因此萌生自己寫一點優化指令碼的工具來,新手可學習,高手請指正。今天先寫乙個指令碼的安裝器,目的在於寫完並新指令碼之後能夠在shell的任何位置都能夠便捷使用。

config.ini主要用於配置兩個目錄。

遞迴遍歷讀取scriptpath目錄下的指令碼檔案,排除掉install.sh和config.ini。
do_file()

為每乙個指令碼在binpath目錄下建立軟鏈結,如果之前存在則會首先刪除掉,並對軟鏈結加上執行許可權(這裡直接加了777)
link_file

() linkpath=$binpath

"/"$linkname

if [[ -l $linkpath ]];then

echo

"===>(warn):"

$linkpath

" is exist,remove it!"

rm $linkpath

fi ln -s

$filepath

$linkpath

echo

"===>(info):link file "

$filepath

" -----> "

$linkname

" successful!"

chmod 777

$linkpath

}

把binpath目錄新增到環境變數中(~/.bash_profile),這樣就可以隨時的訪問指令碼了~
add_profile

()\"" >> ~/.bash_profile

echo

"===>(info)"

$binpath

" is added to bash_profile successful!"

export path=$1:$

else

echo

"===>(info)"

$binpath

" is already in the bash_profile!"

fi}

每次新加的指令碼便可以放在scriptpath目錄,執行install.sh之後便會在binpath裡面生成對應的軟鏈結,然後就可以在終端中自由的使用了~

1.可以看到,我的目錄下面有五個檔案(包括安裝指令碼的配置檔案)

2.執行sh install.sh run 之後

3.在binpath目錄下生成了三個軟鏈結~

4.並在~/.bash_profile裡生成了對應的path

5.可以看到我們在shell的任何位置已經可以是用自己編寫的指令碼指令了~(例如pyversion,是自己寫的乙個修改本地python版本的小指令碼)

6.完整**:

#!/bin/bash

# 讀取config.ini

source ./config.ini

istest=$istest

binpath=$binpath

scriptpath=$scriptpath

editor

()help_fun

()echo_emp

()echo_test

()exit_pro

()link_file

() linkpath=$binpath

"/"$linkname

if [[ -l $linkpath ]];then

echo

"===>(warn):"

$linkpath

" is exist,remove it!"

rm $linkpath

fi ln -s

$filepath

$linkpath

echo

"===>(info):link file "

$filepath

" -----> "

$linkname

" successful!"

chmod 777

$linkpath

}do_file

()add_profile

()\"" >> ~/.bash_profile

echo

"===>(info)"

$binpath

" is added to bash_profile successful!"

export path=$1:$

#只是加到了記憶體中,新開終端失效

else

echo

"===>(info)"

$binpath

" is already in the bash_profile!"fi}

if [[ $# != 1 || $1 != "run" ]];then

help_fun

editor

exit2fi

echo

"是否對"

$scriptpath

"目錄下的指令碼進行安裝?"

echo

"安裝目錄為:"

$binpath

"(y/n)"

read

if [[ $reply == "y" || $reply == "y" ]];then

do_file $scriptpath

add_profile $binpath

echo

"指令碼環境安裝成功!!"

else

echo

"使用者終止exit (abort)"

exit

0fi

本文遵循「署名-非商業用途-保持一致」創作公用協議

玩轉Bash指令碼 選擇結構之if

幾乎所有的程式語言中都有流程控制的概念,即順序結構 選擇結構和迴圈結構。選擇結構也稱分支結構,比如c類語言中的if和switch語句。前面我已經講過了test表示式及其簡化版 運算子的使用,這些判斷的語句即可作為if結構的條件。bash shell中我們可以使用的任何能夠有真假判斷功能的命令 無論是...

玩轉Bash指令碼 選擇結構之if

差點兒全部的程式語言中都有流程控制的概念。即順序結構 選擇結構和迴圈結構。選擇結構也稱分支結構,比方c類語言中的if和switch語句。前面我已經講過了test表示式及其簡化版 運算子的使用,這些推斷的語句就可以作為if結構的條件。bash shell中我們能夠使用的不論什麼能夠有真假推斷功能的命令...

玩轉Bash指令碼 迴圈結構之for迴圈

for 變數 in 取值列表 do 各種操作 done 還有罕見的寫法就是都寫作一行裡 for 變數 in 取值列表 do 各種操作 done 取值列表大致可以分成列舉和迭代兩類 取值列表為空格或回車符分割的字串 foriin meat sleep woman doecho i like i don...