久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

Shell編程(/bin/sh和/bin/bash)

 alfaromeo 2010-12-21

保留字符及其含義

shell變量

條件測試命令

表達式

流程控制

參考資料

 

查看ubuntu支持的Shell:

$ cat /etc/shells

查看當前shell:

$ echo $SHELL

 

以下是sh Shell腳本編程,,也適用于bash,差異之處已說明,。

保留字符及其含義

$ shell變量名的開始,,如$var

| 管道,將標準輸出轉到下一個命令的標準輸入

# 注釋開始

& 在后臺執(zhí)行一個進程

,? 匹配一個字符

* 匹配0到多個字符(與DOS不同,,可在文件名中間使用,并且含.)

$- 使用set及執(zhí)行時傳遞給shell的標志位

$! 最后一個子進程的進程號

$# 傳遞給shell script的參數個數

$* 傳遞給shell script的參數

$@ 所有參數,,個別的用雙引號括起來

$? 上一個命令的返回代碼

$0 當前shell的名字

$n (n:1-) 位置參數

$$ 進程標識號(Process Identifier Number, PID)

>file 輸出重定向

`command` 命令替換,,如 filename=`basename /usr/local/bin/tcsh`

>>fiile 輸出重定向,append

其他:

$$dir

ls > filelist

ls >> filelist

wc -l < filelist

wc -l filelist

sleep 5; echo 5 seconds reaches; ls -l

ps ax |egrep inetd

find / -name core -exec rm {} \; &

filename=`date "+%Y%m%d"`.log

 

shell變量

Shell有如下四種變量:

.用戶自定義變量

.位置變量即 shell script之參數

.預定義變量(特殊變量)

.環(huán)境變量

(1)用戶自定義變量(數據的存儲)

$ COUNT=1
$ NAME
="He Binwu"
$ echo $NAME
$ echo ${NAME}

技巧:因為大部分UNIX命令使用小寫字符,,因此在shell編程中通常使用全大寫變量,,當然這并不是強制性的,但使用大寫字符可以在編程中方便地識別變量。

變量的調用:在變量前加$,。

使用unset命令刪除變量的賦值,。

$ Z=hello
$ echo
$Zhello
$ unset Z
$ echo $Z
$

在變量未賦值之前其值為空。Bourne Shell允許對變量設置默認值(相當于C#中 ?? 表達式),,其格式如下:

${variable:-defaultvalue}

例:

$ echo Hello $UNAME
Hello
$ echo Hello ${UNAME:
-there}
Hello there
$ echo $UNAME #變量值并未發(fā)生變化
there
$ UNAME
=hbwork
$ echo Hello ${UNAME:
-there}
Hello hbwork

另一種情況:改變變量的值,,格式如下:

${variable:=value}

$ echo Hello $UNAME
Hello
$ echo Hello ${UNAME:
=there}
Hello there
$ echo $UNAME #變量值并未發(fā)生變化
there

變量替換中使用命令替換:

echo ${MYDIR} #輸出空
echo ${MYDIR:
-`pwd`}

輸出:

/home/pxl/shelltest

在變量已賦值時進行替換:

MYTEST=pxl
echo ${MYTEST}
echo ${MYTEST:
+"changevalue"}
echo $MYTEST

輸出:
pxl
changevalue
pxl

帶有錯誤檢查的有條件變量替換:

echo ${UNAME:?"UNAME has not been set"}
echo ${UNAME} #如果上一句判斷錯誤,這里不會執(zhí)行

輸出:
./test.sh: 17: UNAME: UNAME has not been set

(2)位置變量(Shell參數)

在shell script中位置參數可用$1..$9表示,,$0表示內容通常為當前執(zhí)行程序的文件名,。

可以使用shift [n] 來刪出指定前n個參數,n默認為1.

腳本test.sh
shift
shift
2
echo $
1
echo $0

執(zhí)行:
$ .
/test.sh a b c d e

輸出:
d
./test.sh

 

條件測試命令

(1)數值測試:

-eq :等于則為真,。
-ne :不等于則為真,。
-gt :大于則為真。
-ge :大于等于則為真,。
-lt :小于則為真,。
-le :小于等于則為真。

(2)字串測試:
= :等于則為真,。
!= :不相等則為真,。
-z字串 :字串長度偽則為真。
-n字串 :字串長度不偽則為真,。

(3)文件測試:
-e文件名 :如果文件存在則為真,。
-r文件名 :如果文件存在且用戶有讀權限則為真。
-w文件名 :如果文件存在且用戶有寫權限則為真,。
-x文件名 :如果文件存在且用戶有可執(zhí)權限行則為真,。
-s文件名 :如果文件存在且至少有一個字符(大小不為零)則為真。
-d文件名 :如果文件存在且為目錄則為真,。
-f文件名 :如果文件存在且為普通文件則為真,。
-c文件名 :如果文件存在且為字符設備文件則為真。
-b文件名 :如果文件存在且為塊設備文件則為真,。

 

表達式

(1) 與,、或、非

&& :與

|| :或

!  : 非(需要有空格)

(2) expr命令

expr命令一般用于整數值,,但也可用于字符串。一般格式為:
expr argument operator argument

其中operator為+ - * / %, 但對*的使用要用轉義符\,。

v1=3
v2
=2
v3
=`expr $v1 \* $v2`
echo $v3

輸出:
6

 

#適用于/bin/bash,,不適用于/bin/sh
v1=3
v2
=2
v3
=$[v1*v2]
echo
$v3

 

流程控制

(1) if 條件語句

if [ -f "$file" ] ; then
newfile
=`echo "$file" | sed "s/${OLD}/${NEW}/g"`
if [ -f "$newfile" ]; then
     echo
"ERROR: $newfile exists already"
else
echo
"renaming $file to $newfile ..."
mv
"$file" "$newfile"
fi
fi

 

(2) for 循環(huán)

for file in $*; do
if [ -f "$file" ] ; then
newfile
=`echo "$file" | sed "s/${OLD}/${NEW}/g"`
if [ -f "$newfile" ]; then
     echo
"ERROR: $newfile exists already"
else
echo
"renaming $file to $newfile ..."
mv
"$file" "$newfile"
fi
fi
done

 

for n in 9 8 7 6 5 4 3 2 1; do
if [ -f "$filen.$n" ]; then
p
=`expr $n + 1`
echo
"mv $filen.$n $filen.$p"
mv
$filen.$n $filen.$p
fi
done

 

#適用于/bin/bash,不適用于sh
for((i=1;i<=10;i++));do
echo
$i
done

 

(3) while 循環(huán)

while [ -n "$1" ]; do
echo
$1
shift
done

 

(4) case 條件

while [ -n "$1" ]; do
case
$1 in
-h) help;shift 1;; # function help is called
-f) opt_f=1;shift 1;; # variable opt_f is set
-l) opt_l=$2;shift 2;; # -l takes an argument -> shift by 2
--) shift;break;; # end of options
-*) echo "error: no such option $1. -h for help";exit 1;;
*) break;;
esac
done

 

參考資料

Shell編程基礎

shell編程簡介

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內容中的聯系方式、誘導購買等信息,謹防詐騙,。如發(fā)現有害或侵權內容,,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多