linux創建帶參數的自定義命令


目標

公司安排一個任務,在主機上添加自定義命令foo:在控制台輸入foo -version后,讀取一個特定文件並輸出。

思路

由於定義在~/.bashrc文件中的命令可以直接在控制台使用,因此可以編寫shell腳本,創建foo命令,把命令追加到用戶的~/.bashrc文件后,這樣用戶就可以在控制台直接使用。

實現

實現自定義命令

foo(){

    case $1 in

        '-version' )

            PATH_TO_VERSION=~/version.properties

            if [ ! -e $PATH_TO_VERSION ]

            then

                echo 'version file not exist'

            else

                grep version=* $PATH_TO_VERSION | cut -d'=' -f2

            fi

            ;;

        '*' | '' )

            echo 'unknown argument type'

            ;;

    esac

}

 

由於foo命令會帶上參數 -version,所以編寫一個函數,通過$1變量就能得到運行命令的第一個參數,也就是-version

 

case in語句判斷$1變量的值,如果是-version’,就開始查詢版本號:

首先檢查版本號文件是否存在。

若不存在就報錯。否則通過grep命令+cut命令,從版本號文件中找出version=*的模式串,用=’分隔,再取出第二段,也就是版本號的值。

 

如果$1變量匹配到 *’ 或為空,說明用戶輸入的參數不是-version,就報錯。

追加到.bashrc文件后

cat << 'EOF' >> ~/.bashrc

foo(){

    case $1 in

        '-version' )

            PATH_TO_VERSION=~/version.properties

            if [ ! -e $PATH_TO_VERSION ]

            then

                echo 'version file not exist'

            else

                grep version=* $PATH_TO_VERSION | cut -d'=' -f2

            fi

            ;;

        '*' | '' )

            echo 'unknown argument type'

            ;;

    esac

}

EOF

source ~/.bashrc

 

使用cat命令將上文的自定義命令追加到用戶的.bashrc文件后。由於代碼較長,這里就用了cat的大段文本模式。

首先<< EOF’ 指定大段文本的結束標志為EOF,加上單引號是把代碼段中的$符號當作普通文本處理,防止腳本解析這些變量。

隨后 >> ~/.bashrc指定追加文件的路徑。

代碼段下的EOF說明大段文本到此為止。注意前面不能有空格。

最后,source命令讀取並執行.bashrc文件中定義的命令,這樣用戶就可以直接在控制台使用了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM