linux学习之路之使用脚本来复制二进制程序和所需的库文件
首先介紹bash的特殊語法
${parameter#*word}
其中parameter為變量,word為分隔符,表示從變量最邊左字符開始到第一匹配到分隔符(word)之間的字符串都去掉
${parameter##*word}:表示從變量最左邊字符開始到最后一次匹配到該分隔符之間的字符串都去掉
注意:其中變量不要加$符號
當*在分隔符(word)前面時,表示從左開始匹配
當*在分隔符(word)后面時,表示從右開始匹配
${parameter%word*}:表示從最右邊字符開始到第一次匹配到的分隔符之間的字符串全部刪除
${parameter%%word*}:表示從最右邊字符開始到最后一次匹配到的分隔符之間的字符串全部刪除
如何使用腳本來完成二進制程序和所需庫文件的復制
#!/bin/bash
DEST=/mnt/sysroot
#復制庫文件
LIBCP() {
??????? LIBDIR=${1%/*}
??????? #判斷目錄是否存在,不存在則創建目錄
??????? [ ! -d $DEST$LIBDIR ] && mkdir -p $DEST$LIBDIR
??????? #判斷庫文件是否存在,不存在則復制庫文件到指定目錄下
??????? [ ! -e $DEST${1} ] && cp ${1}? $DEST$LIBDIR && echo "copy lib $1 finished "
}
#復制二進制程序
CMDCP() {
??????? #找到某個命令的二進制文件
??????? CMD=`which $1 | grep -v '^alias*' | grep -o '[^[:space:]]\{1,\}'`
????????#取二進制程序所在的目錄
??????? CMDDIR=${CMD%/*}
??????? #判斷這個二進制文件所在目錄是否存在,不存在則創建
??????? [ ! -d $DEST$CMDDIR ] && mkdir -p $DEST$CMDDIR
??????? #判斷指定目錄下是否存在該二進制程序,不存在則復制
??????? [ ! -e $DEST$CMD ] && cp $CMD $DEST$CMDDIR && echo "copy command $CMD finished"
??????? #通過ldd命令來找到某個二進制文件所需要的庫文件,并生成列表供for循環使用
??????? for BINARY in `ldd $CMD | grep -o --color '/.*lib\(64\)\?/[^[:space:]]\{1,\}' `;do
????????????????#調用LIBCP函數復制二進制程序的庫文件
??????????????? LIBCP $BINARY
??????? done
??????? }
#提醒用戶輸入命令
read -p 'Pelase input command:' COM
#判斷用戶輸入的命令是否正確
until [ $COM == 'q' ];do
??????? ! which $COM &> /dev/null && echo 'command Wrong!' && read -p 'input again:' COM \
??????? && continue
??????? CMDCP $COM
??????? read -p 'Pelase input command continue:' COM
done
轉載于:https://blog.51cto.com/xslwahaha/1532529
總結
以上是生活随笔為你收集整理的linux学习之路之使用脚本来复制二进制程序和所需的库文件的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓第六夜 凡高的自画像
- 下一篇: DrawTool画笔之图形笔