日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

〖Linux〗简单的将Shell和一些文件打包成一个单独的“可执行文件”

發布時間:2025/3/17 linux 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 〖Linux〗简单的将Shell和一些文件打包成一个单独的“可执行文件” 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

有時候給別人分享一個工具的時候,同時需要提供的文件比較多;

如果分享一個壓縮包還得教會對方如何解壓、執行哪個腳本,感覺需要傳輸的內容多了就不方便;

?

把幾個Shell腳本和文件打包成一個“單獨的可執行文件”,對方接收到這個文件,只需要執行一下這個文件,就可以實現解壓、執行對應腳本了,相對比較方便;

?

#!/bin/bash - #=============================================================================== # # FILE: shell_pack.sh # # USAGE: ./shell_pack.sh # # DESCRIPTION: # # OPTIONS: --- # REQUIREMENTS: --- # BUGS: --- # NOTES: --- # AUTHOR: lwq (28120), scue@vip.qq.com # ORGANIZATION: # CREATED: 04/22/2015 02:38:01 PM CST # REVISION: --- #===============================================================================#=== FUNCTION ================================================================ # NAME: usage # DESCRIPTION: Display usage information. #=============================================================================== function usage () {cat <<- EOTUsage : $0 -p package -s script file1 file2 file3 ..Options:-h|help Display this message-p|package The output package name-s|script The script will run when unpack packageOther The all files what you want to packEOT } # ---------- end of function usage ----------#----------------------------------------------------------------------- # Handle command line arguments #-----------------------------------------------------------------------while getopts ":hp:s:" opt docase $opt inh|help ) usage; exit 0 ;;p|package ) package_name=$OPTARG ;;s|script ) install_script=$OPTARG ;;\? ) echo -e "\n Option does not exist : $OPTARG\n"usage; exit 1 ;;esac # --- end of case --- done shift $(($OPTIND-1))if [[ -z $package_name ]]; thenecho "package_name can't not be empty"usageexit fiif [[ -z $package_name ]]; thenecho "install_script can't not be empty"usageexit fifiles=$@generate_wrapper_script(){local install_script=$1local wrapper_script=$2cat <<-'EOT' >$wrapper_script #!/bin/sh echo "begin ..." unpackdir=/tmp/$(basename $0)_unpack rm -rf $unpackdir 2>/dev/null mkdir -p $unpackdir echo "unpacking ..." sed '1, /^#__SCRIPTEND__/d' $0 | tar zxf - -C $unpackdir if [ $? -ne 0 ]; thenecho "unpack package failed."exit 1 fi echo "" echo "installing ..." cd $unpackdir EOTcat <<-EOR >>$wrapper_script chmod +x $install_script ./$install_script EORcat <<-'EOE' >>$wrapper_script if [ $? -ne 0 ]; thenecho "install failed."exit 2 elif [[ -d $unpackdir ]]; thenrm -rf $unpackdir fi echo "install ok, enjoy!" exit 0 #__SCRIPTEND__ EOE }tarfile=package_content_$$.tgz wrapfile=wrap_$$.shecho -e "start packing ..\n" tar zcvf $tarfile $files $install_script generate_wrapper_script $install_script $wrapfile cat $wrapfile $tarfile > $package_name chmod +x $package_nameecho -e "\noutput: $package_name\n"rm -f $tarfile rm -f $wrapfile

?

文件內容保存到 shell_pack.sh,使用方法舉例:

  ./shell_pack.sh -p logcat_install -s logcat_install.sh logcat_all.sh logcat_wrapper.sh vmstat2

將產生可執行文件“logcat_install”,執行logcat_install時,會解壓自身文件內的tar.gz文件,并執行關鍵的腳本 logcat_install.sh?

轉載于:https://www.cnblogs.com/scue/p/4447911.html

總結

以上是生活随笔為你收集整理的〖Linux〗简单的将Shell和一些文件打包成一个单独的“可执行文件”的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。