Shell腳本編寫

基礎語法及簡單實例

主要參考http://man.linuxde.net/xargs
1. 如下列出一些基本使用案例,後續還要繼續掌握如sed/xargs/cut/tr等指令

學會使用if…then…else fi 語法 表達式的判斷如ne/le/ge/eq/lt/gt等數值比較

#!/bin/sh
i=gparted
j=/home/moocos/sda3
ffmpegcur=/media/sf_tftp/ffmpeg-3.4.1
SDLdir=/media/sf_tftp/SDL2-2.0.8
x=`sudo apt-cache search all | grep $i`
if [ `sudo apt-cache search all | grep $i |wc -l` -ne 0 ];then
   echo -e "yes,the packet_list: \n$x"
else
   sudo apt-get install gparted
fi
#有對應的目錄就表示已經
if [`ls -l $j |wc -l` -ne 0]; then
  echo -e "have already dir"
else
  `mkdir /home/moocos/sda3` && `mount /dev/sda3 /home/moocos/sda3`
fi
cd /home/moocos/sda3
#找到對應的ffmpeg目錄
#檢查是否存在ffmpeg對應的目錄或者文件;
if [`find . -type d -name ffmpeg |wc -l` -ne 0 ];then
  echo -e "have already SDL and ffmpeg"
else
  `cp -rf $ffmpegcur ./` && `cp -rf $SDLdir ./`
fi

學會使用目錄查找,文件查找find . -type d -name ffmpeg,type後面可以跟不同的類型。wc -l 顯示輸出查找的個數。

#!/bin/sh
i=yasm
j=git
x=`sudo apt-cache search all | grep $i`
y=`sudo apt-cache search all | grep $j`
if [ `sudo apt-cache search all | grep $i |wc -l` -ne 0 ];then
   echo -e "yes,the packet_list: \n$x"
else
   sudo apt-get install yasm
fi
if [ `sudo apt-cache search all | grep $j |wc -l` -ne 0 ];then
   echo -e "yes,the packet_list: git \n$y"
else
   sudo apt-get install git
fi
#!/bin/sh
#SDL2
preDir=$(pwd)
currentDir=/SDL2-2.0.8
prefixdir=/usr/local/SDL
: << !
首先是進入到對應的SDL目錄中去;
!
var=$preDir$currentDir
cd $var
#說明導出的目錄位置
echo $preDir$prefixdir
./configure --prefix=$preDir$prefixdir
make 
make install
#將SDL編譯到默認的目錄中/usr/lib
./configure
make 
make install

將用到的編譯ffmpeg寫成腳本方便以後使用,這些目錄都可以更改cp -rf ffmpegcur ./` && `cp -rf SDLdir ./ 是將共享文件夾的內容複製到虛擬機的掛載目錄中去

#!/bin/sh
#SDL2
preDir=$(pwd)
currentDir=/ffmpeg-3.2.4
prefixdir=/usr/local/ffmpeg
includeSDL=/usr/local/SDL/include/SDL2
libSDL=/usr/local/SDL/lib
: << !
首先是進入到對應的SDL目錄中去;
!
var=$preDir$currentDir
cd $var
#說明導出的目錄位置
echo $preDir$prefixdir
./configure --prefix=$preDir$prefixdir --enable-sdl --enable-ffplay --extra-cflags=-I$preDir$includeSDL --extra-ldflags=-L$preDir$libSDL --extra-libs=-ISDL2 --enable-shared
#make -j8
#make install

#!/bin/sh
#替換所有預編譯定義的SDL;
CurDir=$(pwd)/ffmpeg-3.2.4/
filename=config.mak
echo $CurDir$filename
var=`cat $CurDir$filename | grep "CONFIG_SDL2 0"` 
#打印當前匹配上的SDL2的行
sed -i 's/!HAVE_SDL2=yes/HAVE_SDL2=yes 1/g' $CurDir$filename
sed -i 's/!CONFIG_FFPLAY=yes/CONFIG_FFPLAY=yes/g' $CurDir$filename

bat腳本編寫簡單實例,爲虛擬磁盤增加容量pushd類似於shell中的cd -

@echo off
echo %cd%
type 1.txt
rem 設置當前目錄爲D:\Program Files\Oracle\VirtualBox
set current_dir=D:\Program Files\Oracle\VirtualBox
pushd %current_dir%
VBoxManage.exe modifyhd E:\mooc-os-2015.vdi\mooc-os-2015.vdi --resize 51200
pause
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章