linux脚本使用-------安装madplay及MPlayer播放器脚本分析及命令参数前加“横杠”的背景解释

本文介绍了如何通过Linux脚本来安装madplay和MPlayer,强调理解脚本的顺序执行和命令参数的重要性。文中提到在脚本中命令参数前加“--”或“-”的差异,前者表示单词形式参数,后者表示字符形式,源自System V和BSD风格。同时,文章解释了Linux系统中这两种风格的起源和关系。
摘要由CSDN通过智能技术生成

最近有考试这篇文章写了个开头就扔在了草稿箱,现在在把它搬出来,在学习代码语言的时候,有一个比较有效的学习过程,就是看别人的代码,读懂,理解透彻,然后模仿别人的代码,再自己写,边写边看,重点是运用



以前接触过脚本,但是我是个菜鸟,这个是安装madplay和MPlayer的脚本

这里有几处说明:

1、# 表示注释

2、脚本是顺序执行的,没有指针等,相对比较简单,但是强大,重要的是理解命令

3、上面的代码因为排版原因,有些注释被挤压到了下一行

4、有些代码功能相似,我就不一一注释了。


#!/bin/sh

#+--------------------------------------------------------------------------------------------
#|Description:  This shell script used to download file source code and cross compile it.
#|     Author:  fanmaolin <fanmaolin@gmail.com>
#|  ChangeLog:
#|           1, Initialize 1.0.0 on 2017
#+--------------------------------------------------------------------------------------------

PRJ_PATH=`pwd`  		#pwd 命令显示当前路径

if [ -z "$INST_PATH" ] ; then 			#判断“$INST_PATH”是否为空字符串
    INST_PATH=${PRJ_PATH}/install		#如果是就给它赋值
fi 										#结束if语句

if [ ! -d $INST_PATH ] ; then			#判断 $INST_PATH 目录是否存在
    mkdir -p $INST_PATH					#如果不存在就创建一个名为 $INST_PATH 的目录
fi

ARCH=arm920t							#赋值语句

if [ -z "$ARCH" -a $# -gt 0 ] ; then	#如果 "$ARCH" 为空  -a(相当于逻辑与&&)  $#(表示传给脚本的参数个数) -gt(大于) 0 
   ARCH=$1								#上面的条件都满足就把 #1(命令行的第一个参数) 赋值给ARCH  http://blog.csdn.net/xiaofei125145/article/details/40184289
fi

sup_arch=("" "arm926t" "arm920t" )		# 一对括号表示是数组,数组元素用“空格”符号分割开


#该函数用于选择正确的ARCH及交叉编译器
function select_arch()						
{
   echo "Current support ARCH: "		#打印字符串
   i=1
   len=${#sup_arch[*]}					#获取数组长度

   while [ $i -lt $len ]; do			#执行while语句直到 $i -lt(小于)  $len 
     echo "$i: ${sup_arch[$i]}"			#分别打印出 “  , arm926t,arm920t” 
     let i++;							#let命令用于计算
   done

   echo "Please select: "
   index=
   read index							#读取你从键盘输入的给index的值(1、2、3)
   ARCH=${sup_arch[$index]}				#把你输入的值赋给ARCH
}



#该函数用于解压缩
function decompress_packet()
(
   echo "+---------------------------------------------+"
   echo "|  Decompress $1 now"  
   echo "+---------------------------------------------+"

    ftype=`file "$1"`			#判断压缩包类型,对应不同的解压命令
    case "$ftype" in
       "$1: Zip archive"*)
           unzip "$1" ;;		#如果是Zip型就用ubzip命令解压
       "$1: gzip compressed"*)          
           if [ 0 != `expr "$1" : ".*.tar.*" ` ] ; then		
               tar -xzf $1					#如果存在就用tar -xzf filename 解压
           else
               gzip -d "$1"					#否则(如果是.gz)就用gzip -d flename 解压
           fi ;;
       "$1: bzip2 compressed"*)
           if [ 0 != `expr "$1" : ".*.tar.*" ` ] ; then
               tar -xjf $1
           else
               bunzip2 "$1"
           fi ;;
       "$1: POSIX tar archive"*)
           tar -xf "$1" ;;
       *)
          echo "$1 is unknow compress format";;   #如果没有符合条件的就打印该信息
    esac
)



#又复习了一遍解压命令http://www.jb51.net/LINUXjishu/43356.html
#总结 
#1、*.tar 用 tar –xvf 解压 
#2、*.gz 用 gzip -d或者gunzip 解压 
#3、*.tar.gz和*.tgz 用 tar –xzf 解压 
#4、*.bz2 用 bzip2 -d或者用bunzip2 解压 
#5、*.tar.bz2用tar –xjf 解压 
#6、*.Z 用 uncompress 解压 
#7、*.tar.Z 用tar –xZf 解压 
#8、*.rar 用 unrar e解压 
#9、*.zip 用 unzip 解压 




if [ -z "$CROSS" ] ; then
   if [ -z $ARCH ] ; then
      select_arch				#如果ARCH、CROSS都为空就调用select_arch函数选择合适的编译器
   fi
   CROSS="/opt/buildroot-2012.08/${ARCH}/usr/bin/arm-linux-"			#交叉编译器地址赋给CROSS
fi

CROSS_PATH=`dirname $CROSS`						#dirname命令用来获取文件的绝对路径   脚本中常用这个命令cd "$(dirname "$0")"获取脚本文件所在的绝对路径
export PATH=${CROSS_PATH}:$PATH					#export [-fnp][变量名称]=[变量设置值],Linux export命令用于设置或显示环境变量,在这里用来将原来编译器命令改成交叉编译器命令
export CC=${CROSS}gcc
export CXX=${CROSS}g++
export AR=${CROSS}ar							#ar是linux下的库管理器
export AS=${CROSS}as							#as命令是linux下的汇编器
export LD=${CROSS}ld							#ld是linux下的链接器

		#	上面几个参考:http://blog.csdn.net/flygo201/article/details/40432895
export NM=${CROSS}nm							#nm用于列出程序文件中的符号
export RANLIB=${CROSS}ranlib					#早期ranlib用来对静态库的符号索引表进行更新http://www.linuxidc.com/Linux/2011-05/35774.htm
												#ranlib相当于ar -s http://blog.csdn.net/langeldep/article/details/8296929 后来就不用ranlib了
export STRIP=${CROSS}strip						#程序文件瘦身器  http://blog.csdn.net/altawu/article/details/7270719

LIBMAD_NAME=libmad-0.15.1b
LIBMAD_DL_ADDR=ftp://ftp.mars.org/pub/mpeg/$LIBMAD_NAME.tar.gz  		#下载地址
if [ ! -d ${INST_PATH}/libmad/i
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值