linux中常用腳本和函數(shù)分享
#查找當(dāng)前目錄中是否存在指定目錄,若不存在,則創(chuàng)建之
function mkdir_1
{
if test ! -d $1
then
mkdir $1
fi
}
#指定文件中的"prefix = .*"串替換為"prefix=/home/gnome-unicore-install2/usr/"
#可以用來(lái)作為sed用法的參考
function modify_prefix
{
chmod +w $1
cp $1 $1.bak
sed 's/prefix = .*/prefix=/home/gnome-unicore-install2/usr/g' $1.bak > $1
rm $1.bak
}
#指定文件中的"^LDFLAGS =.*"串替換為"LDFLAGS = -rdynamic -lgdk_pixbuf -lgtk -lgdk -lgmodule -lglib -ldl -lXext -lX11 -lm"
#change_gnome-config FILENAME
function change_gnome-config
{
cp $1 $1.bak
sed 's/^LDFLAGS =.*/LDFLAGS = -rdynamic -lgdk_pixbuf -lgtk -lgdk -lgmodule -lglib -ldl -lXext -lX11 -lm /g' $1.bak> $1
rm $1.bak
}
#刪除指定文件的含有指定字符的行
#格式:delete_line filename "word_contain"
function delete_line
{
chmod +w $1
cp $1 $1.bak
cat $1.bak | grep -v -e "$2" >$1
}
#用途:刪除文件中包含line1或(和?)line2的行
#格式:delete_line filename line1 line2
function delete_line_no
{
chmod +w $1
cp $1 $1.bak
sed $2,$3'd' $1.bak>$1
rm $1.bak
}
#用途:在LINE_NO指定的行插入字符串CONTENT
#可以用來(lái)作為sed用法的參考
#格式: add_line FILENAME LINE_NO CONTENT
function add_line
{
chmod +w $1
cp $1 $1.bak
sed -e $2 'i' "$3" '' $1.bak > $1
rm $1.bak
}
#用途:檢查含有"PC24"代碼的程序并打印出來(lái)
#格式: check_PC24 //after installation
function check_PC24
{
echo "now comes the PC24 checking..."
. $COMMAND_UNICORE/shell/shell_PC24 >& /dev/null
if test -s $COMMAND_UNICORE/PC24_result
then :
echo "The following file contains PC24 problems: $COMMAND_UNICORE/PC24_result "
else
echo "No PC24 problem found"
fi
}
#打印標(biāo)題
displayheader() {
echo " *****************************************"
echo " * IeeeCC754 testing tool *"
echo " *****************************************"
echo " "
}
#打印一個(gè)菜單的做法
displayplatformmenu() {
#clear the screen
clear
displayheader
echo " a) SunSparc "
echo " b) IntelPentium "
echo " c) AMD "
echo " d) Unicore32 "
echo " e) Unicore32(with FP2001) "
echo " "
echo -n " select a Platform > "
}
#接收一個(gè)菜單輸入
displayplatformmenu
read answer
case ${answer} in
a) TARGET="BasicOp";;
b) TARGET="Conversion";;
*) badchoice;;
esac
#查找當(dāng)前目錄下是否存在file_name文件
#可以用來(lái)作為if用法的參考
detectfile_name() {
if [ ! -f file_name ]
then
echo "Error: file_name does not exist. Please check"
exit 1;
else
echo "OK,the directy is exist"
fi
}
#將參數(shù)指定的一個(gè)或多個(gè)目錄項(xiàng)以及其下的多級(jí)子目錄下的所有文件名和目錄名轉(zhuǎn)換為小寫(xiě)。
cvitem()
{
echo "mv $1 `dirname $1`/`basename $1 | tr
'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'`"
}
[ $# = 0 ] && { echo "Usage: lcdir item1 item2 ..."; exit; }
for item in $* #可以用來(lái)作為for用法的參考
do
[ "`dirname $item`" != "`basename $item`" ] && {
[ -d $item ] &&
{
for subitem in `ls $item`
do
cvlc $item/$subitem
done
}
cvitem $item
}
done
#一個(gè)login的例子
if ($?path) then
set path=($HOME/bin $path)
else
set path=($HOME/bin /usr/bin .)
endif
if ( ! $ {?DT} ); then
stty dec new
tset -I -Q
endif
set mail=/usr/spool/mail/$USER
#關(guān)于if使用的幾個(gè)例子
#執(zhí)行一個(gè)命令或程序之前,先檢查該命令是否存在,然後才執(zhí)行
if [ -x /sbin/quotaon ] ; then
echo "Turning on Quota for root filesystem"
/sbin/quotaon /
fi
#得到Hostname
#!/bin/sh
if [ -f /etc/HOSTNAME ] ; then
HOSTNAME=`cat /etc/HOSTNAME`
else
HOSTNAME=localhost
fi
#如果某個(gè)設(shè)定檔允許有好幾個(gè)位置的話,例如crontab,可利用if then elif fi來(lái)找尋
if [ -f /etc/crontab ] ; then #[ -f /etc/crontab ]等價(jià)于test -f /etc/crontab
CRONTAB="/etc/crontab"
elif [ -f /var/spool/cron/crontabs/root ] ; then
CRONTAB="/var/spool/cron/crontabs/root"
elif [ -f /var/cron/tabs/root ] ; then
CRONTAB="/var/cron/tabs/root"
fi
export CRONTAB
#利用uname來(lái)判斷目前系統(tǒng),并分別做各系統(tǒng)狀況不同的事。
SYSTEM=`uname -s`
if [ $SYSTEM = "Linux" ] ; then
echo "Linux"
elif [ $SYSTEM = "FreeBSD" ] ; then
echo "FreeBSD"
elif [ $SYSTEM = "Solaris" ] ; then
echo "Solaris"
else
echo "What?"
fi
#關(guān)于while使用的例子
#無(wú)條件循環(huán)
while : ; do
echo "do something forever here"
sleep 5
done
- linux shell自定義函數(shù)(定義、返回值、變量作用域)介紹
- Linux里awk中split函數(shù)的用法小結(jié)
- linux下C語(yǔ)言中的mkdir函數(shù)與rmdir函數(shù)
- 解析Linux下的時(shí)間函數(shù):設(shè)置以及獲取時(shí)間的方法
- linux系統(tǒng)上支持php的 iconv()函數(shù)的方法
- 解析linux 文件和目錄操作的相關(guān)函數(shù)
- PHP執(zhí)行l(wèi)inux系統(tǒng)命令的常用函數(shù)使用說(shuō)明
- linux下access函數(shù)的用法介紹
- Linux Shell腳本系列教程(四):使用函數(shù)添加環(huán)境變量
- linux下system函數(shù)的簡(jiǎn)單分析
相關(guān)文章
shell腳本實(shí)現(xiàn)Hbase服務(wù)的監(jiān)控報(bào)警和自動(dòng)拉起問(wèn)題
這篇文章主要介紹了shell腳本實(shí)現(xiàn)Hbase服務(wù)的監(jiān)控報(bào)警和自動(dòng)拉起,主要是通過(guò)服務(wù)名監(jiān)控和端口監(jiān)控,通過(guò)企業(yè)微信消息通知腳本,對(duì)此內(nèi)容感興趣的朋友跟隨小編一起看看吧2022-11-11
Shell腳本中計(jì)算字符串長(zhǎng)度的5種方法
這篇文章主要介紹了Shell腳本中計(jì)算字符串長(zhǎng)度的5種方法,來(lái)自于個(gè)人Shell腳本長(zhǎng)期的開(kāi)發(fā)經(jīng)驗(yàn),需要的朋友可以參考下2014-06-06
shell腳本開(kāi)頭#!/bin/bash的作用詳解
在Shell腳本中,#!/bin/bash 是指定腳本使用 Bash 解釋器的 shebang 語(yǔ)句,它出現(xiàn)在腳本的第一行,并告訴操作系統(tǒng)使用 Bash 解釋器來(lái)執(zhí)行該腳本,這篇文章主要介紹了shell腳本開(kāi)頭#!/bin/bash的作用詳解,需要的朋友可以參考下2023-12-12
Shell腳本中使用getopts處理多命令行選項(xiàng)
今天小編就為大家分享一篇關(guān)于Shell腳本中使用getopts處理多命令行選項(xiàng),小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03
Linux中使用expect腳本實(shí)現(xiàn)遠(yuǎn)程機(jī)器自動(dòng)登錄
本篇文章給大家介紹在Linux中使用expect腳本實(shí)現(xiàn)遠(yuǎn)程機(jī)器自動(dòng)登錄,前提是要?jiǎng)?chuàng)建一個(gè)expec腳本ssh_expect,接下來(lái)定義一些命令別名等,下面跟著腳本之家小編一起學(xué)習(xí)學(xué)習(xí)吧2015-09-09
Linux下科學(xué)計(jì)數(shù)法(e)轉(zhuǎn)化為數(shù)字的方法
這篇文章主要介紹了Linux下科學(xué)計(jì)數(shù)法(e)轉(zhuǎn)化為數(shù)字的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05
Linux命令每天必學(xué)(55)之traceroute命令
這篇文章主要介紹了Linux命令每天必學(xué)(55)之traceroute命令的相關(guān)資料,需要的朋友可以參考下2015-11-11
linux腳本實(shí)現(xiàn)自動(dòng)發(fā)送和收取郵件的設(shè)置方法
這篇文章主要是介紹linux下通過(guò)腳本自動(dòng)發(fā)送和收取郵件的設(shè)置方法,有需要的朋友可以參考下2013-05-05
使用shell腳本每天對(duì)MySQL多個(gè)數(shù)據(jù)庫(kù)自動(dòng)備份的講解
今天小編就為大家分享一篇關(guān)于使用shell腳本每天對(duì)MySQL多個(gè)數(shù)據(jù)庫(kù)自動(dòng)備份的講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2019-03-03

