青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

興海北路

---男兒仗劍自橫行
<2008年3月>
2425262728291
2345678
9101112131415
16171819202122
23242526272829
303112345

統計

  • 隨筆 - 85
  • 文章 - 0
  • 評論 - 17
  • 引用 - 0

常用鏈接

留言簿(6)

隨筆分類

隨筆檔案

收藏夾

全是知識啊

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

幾個shell程序設計小知識(shell常識部分)
來源:http://www.chinaunix.net/jh/24/628479.html

引用:一、用戶登陸進入系統后的系統環境變量:
$HOME 使用者自己的目錄
$PATH 執行命令時所搜尋的目錄
$TZ 時區
$MAILCHECK 每隔多少秒檢查是否有新的信件
$PS1 在命令列時的提示號
$PS2 當命令尚未打完時,Shell 要求再輸入時的提示號
$MANPATH man 指令的搜尋路徑

二、特殊變量:

$0 這個程序的執行名字
$n 這個程序的第n個參數值,n=1..9
$* 這個程序的所有參數
$# 這個程序的參數個數
$$ 這個程序的PID
$! 執行上一個指令的PID
$? 執行上一個指令的返回值

三、shell中的變元:
* 任意字符串
? 一個任意字符
[abc] a, b, c三者中之一
[a-n] 從a到n的任一字符

四、幾個特殊字符表示

\b 退回
\c 打印一行時沒有換行符 這個我們經常會用到
\f 換頁
\r 回車
\t 制表
\v 垂直制表
\\ 反斜線本身

五、判斷文件的屬性

格式:-操作符 filename
-e 文件存在返回1, 否則返回0
-r 文件可讀返回1,否則返回0
-w 文件可寫返回1,否則返回0
-x 文件可執行返回1,否則返回0
-o 文件屬于用戶本人返回1, 否則返回0
-z 文件長度為0返回1, 否則返回0.
-f 文件為普通文件返回1, 否則返回0
-d 文件為目錄文件時返回1, 否則返回0

六、測試字符串
字符串1 = 字符串2 當兩個字串相等時為真
字符串1 != 字符串2 當兩個字串不等時為真
-n 字符串      當字符串的長度大于0時為真
-z 字符串      當字符串的長度為0時為真
字符串       當串字符串為非空時為真

七、測試兩個整數關系
數字1 -eq 數字2     兩數相等為真
數字1 -ne 數字2     兩數不等為真
數字1 -gt 數字2     數字1大于數字2為真
數字1 -ge 數字2     數字1大于等于數字2為真
數字1 -lt 數字2     數字1小于數字2為真
數字1 -le 數字2     數字1小于等于數字2為真

八、邏輯測試
-a         與
-o        或
!        非



今天介紹shell特殊字符的引用
===============================
shell中的特殊字符有

1、$ 美元符
2、\ 反斜杠
3、` 反引號
4、" 雙引號
5、< ,>,*,?,[,]

下面我一一舉列說明
一、$符號
1、echo $? 顯示的是上一條指令退出狀態
2、echo "$?" 效果同上
3、echo '$?' 顯示的是$?
4、echo \$? 顯示的是$?
5、echo "\$?" 顯示的是$?

  大家可能已經看出 $符號在雙引號中具有特殊意義 雙引號對$符號不起作用
而單引號可以將特殊字符的的特殊意義屏蔽掉,使其能顯示為字符本身,反斜
杠也可以將特殊字符的特殊含義屏蔽掉,使特殊字符失去特殊含義。

二、\ 反斜杠
  反斜杠的作用是將特殊符號字符的特殊含義屏蔽掉,使其還是原字符
A=1234
echo \$A 顯示為$A 如果不加\將顯示為1234
echo \` 顯示為`
echo \" 顯示為雙引號
echo \\ 顯示為\

三、` 反引號
  反引號的功能是命令替換,將反引號中的字符串做為命令來執行,我們在用shell編程時經常用的到 將系統命令的執行結果賦給一個變量

A=`date`
echo $A 顯示的不是date而是當時的時間串
比如有一文件A的內容如下 
ABCDEFG
1234456
abcdefg

B=`cat A|grep 234` # 檢索文件A中含有字符串234的行
echo $B 將顯示為1234456
echo "$B" 將顯示為什么?
echo "\$B" 將顯示為什么?讀者自己試試

四、" 雙引號
  在系統中有些特殊字符,為避免引用這些特殊字符 往往用雙引號或單引號將這些特殊字符引起來,使其不具有特殊含義。
  但有一部分特殊字符在引號中還是具有特殊含義,用雙引號引起來是不起作用的。本文中所列的前四個特殊字符在雙引號中還是特殊字符。為了使其不具有特殊含義一是用單引號引進來二是用\反斜線使其失去作用。

  比如我們想原樣輸出這些特殊字符

echo """
echo "$"
echo "\"
echo "`"
   以上不是你所期望的結果,因為雙引號對它們不起作用,你只能這樣才能輸出這些特殊字符的原形
echo '"'
echo '$'
echo '\'
echo '`'

echo "\""
echo "\$"
echo "\\"
echo "\`"
將分別顯示為 " $ \ `
五、其它特殊字符
  大家注意到 除了前四個特殊字符外 我將其它的特殊字符都放在一塊,這是因為前四個特殊字符在雙引號中還是具有特殊含義,所以單獨拿出來講,除此以外的特殊字符如果你要輸出這些特殊字符的原形,你就可以用雙引號或單引號引起來使其失去特殊含義。
< ,>,*,?,[,]對shell有特殊含義 但你可以用雙引號引起來輸入這些原形

  講了這么多大家是不是已經注意到所有的特殊字符在單引號中失去特殊含義,如果你要輸出特殊字符原形但又記不清那些特殊字符在雙引號中不能輸出原形,建議你干脆用單引號引起來。

今天介紹條件測試語句

一、if 條件語句 
格式:
if 條件表達式
then #當條件為真時執行以下語句
命令列表
else #為假時執行以下語句
命令列表
fi

if 語句也可以嵌套使用

if 條件表達式1
then
if 條件表達式2
then
命令列表
else
if 條件表達式3
then
命令列表
else
命令列表
fi
fi
else
命令列表
fi

你可以進行多層嵌套 一個if語句一定要跟一個fi 表示該層條件結束  否則會造成語法錯誤
結合前面講的 舉例如下:
這里先講一個條件語句中用到的命令test 表示測試test后面的條件是否為真

if test -f "$1"
then
lpr $1
else
if test -d "$1"
then
cd $1
lpr $1
else
echo "$1不是文件或目錄"
fi
fi

以上的例子還可以改成如下所示

if test -f "$1"
then
lpr $1
elif test -d "$1" #elif 同else if
then
(cd $1;lpr $1)
else
echo "$1不是文件或目錄"
fi

以上的例子不知您是否看懂是什么意思嗎?
假如我們現在將這個例子保存為prfile
chmod +x prfile
執行剛才的程序
./prfile aaa

這個例子是檢查你的輸入的參數是否是一個文件 如果是就打印 如果是一個目錄 先轉目錄再打印 如果即不是文件也不是目錄給出提示

二、多重條件測試語句case
格式:
case 字串 in
模式) 命令列表;;
模式) 命令列表;;
....
esac

多重條件語句是以case 開始以esac結束 中間可以有多個條件列表 功能是測試字串和和里面的模式有沒有匹配的,有就執行里面的命令列表 模式也可以是*號 表示任意字串,每個模式里面的最后要心;;雙引號結束,否則會發生語法錯誤。

現舉例如下:

case $1 in
*.c)
cc $1
;;
*.txt)
lpr $1
;;
*)
echo "未知的類型"
esac

假如將以上內容保存在文件abc中

chmod +x abc
執行 ./abc a.c   將會對文件a.c進行編譯
執行 ./abc readme.txt 將會把文件通過打印機
假如我將以上內容改一下,你是否會知道它的執行結果?

case $1 in
*)
cc $1
;;
*.txt)
lpr $1
;;
*.c)
echo "未知的類型"
esac

今天介紹循環語句
一. while 循環
while 命令格式

while 條件表
do
命令表
done

執行過程

shell首先執行條件表,如果條件表的最后一條語句的退出狀態為零,則執行盾環體內的命令
表,執行完后,再檢查條件表,如果退出狀態為零將繼續執行,如此循環往復直到條件表的
最后一條語句的退出狀態非零. 退出狀態為零就是條件為真True.

舉例說明 假如shell文件的內容如下:

Sum=0
i=0
while true #true是系統的關鍵詞 表示真
do
i=`expr $i + 1`
Sum=`expr $Sum + $i`
if [ $i = "100" ]
then
break;
fi
done
echo $i $Sum
最后這個程序顯示的是 100 5050
這個程序的運算就是將1到100加起來

下面將這個程序再改動一下


Sum=0
i=0
while [ $i != "100" ]
do
i=`expr $i + 1`
Sum=`expr $Sum + $i`
done
echo $i $Sum

改動后的程序運算結果和上面是一樣 但程序比上面的要簡練

在這個循環中還可以以until做為測試條件 它正好與while測試的條件相反,也就是當條件為假時將繼續執行循環體內的語句,否則就退出循環體,下面還用這個例子.


Sum=0
i=0
until [ $i = "100" ]
do
i=`expr $i + 1`
Sum=`expr $Sum + $i`
done
echo $i $Sum
當i不等于100時循環 就是當條件為假時循環,否則就退出,而第一個例子是當i不等于100
時循環,也就是測試條件為真時循環.

二.for 循環

命令格式:
for 變量 in 名字列表
do
命令列表
done

這里的名字列表是一個由空格分隔的字符串列表,shell在執行for循環時每次依次從名字表
中取出一個字符串賦給循環變量作為變量的值.
在寫for語句時,也可以省略in 名字列表部分,這表示用當前的位置參數來代替這時的名
字列表.
下面舉個例子
比如在你的電腦中有兩個目錄,一個是aa,一個是bb在這兩個目錄中有5個相同的文件,但其
中一個目錄中的一個或多個文件剛剛修改過,現在我忘記剛才改的是那幾個文件 了,那么我靠梢員冉弦幌掄飭礁瞿柯嫉奈募橢懶?程序如下:

for File in a1 a2 a3 a4 a5
do
diff aa/$File bb/$File
done

下面再舉一個不帶名字列表的例子

for File
do
echo $Filw
done

文件內容保存在a.sh中 并可執行
我們在執行這個shell程序時命令行如下:
a.sh a1 a2 a3 a4 a5
執行結果如下:
a1
a2
a3
a4
a5
大家從這個例子中可以看到命令行的參數被逐一讀入一次
三.循環控制語句
break 命令不執行當前循環體內break下面的語句從當前循環退出.
continue 命令是程序在本循體內忽略下面的語句,從循環頭開始執行.

一,命令組合:圓括號和花括號
shell中有兩種方法將命令組合在一起:圓括號和花括號.圓括號使shell創建一個子shell
來讀取并執行括起來的名命令.左括號和右括號不論出現在命令行中的什么位置,shell都會
認為它們具有特殊的組合意義的.只有用雙引號將它們括起來引用,才表示圓括號或花括號
的原義.例如:

echo a(b)
將出現語法上的錯誤,要想輸出a(b)字符串 只能括起來
echo "a(b)"
或echo a"("b")"
這樣才能被shell正確解釋.
利用組合命令有什么作用呢?
一,用圓括號組合命令
圓括號的組合命令可以創建子進程運行組合程序,建立子進程的功能是很有用的,因為
子shell在組合命令中的種種操作都不會影響到當前shell的各變量的值.
例如:
子進程在執行組合命令時改變了工作目錄,并在新的工作目錄下執行一系例命令,執行
完后它可以不必返回原工作目錄,因為子進程工作目錄的改變不會影響到當前工作目錄.

創建子進程后將當前的環境也同樣傳給子shell,當前shell中用export輸出到環境中的
各變量在子shell中同樣有效.


花括號也可以將命令組合在一起.左 右花括號只有作為一條命令的第一個字出現時,
shell才它們含有特殊含義.
與圓括號不同的是花括號并不創建子shell,只是由當前的shell來讀取并執行括起來的
命令.有時用戶希望使用一組命令的順序輸出作為另一組命令的輸入,此時用花括號是很方
便的.
不論是用圓括號不是花括號,退出狀態都是等于最后一條括起來的命令的退出狀態.


二,可以在當前shell中執行的命令

用戶在使用shell時一定要了解那些是可以在當前shell中執行的命令 那些不可以
可以在當前shell中執行的命令有:

break case cd continue
echo eval exec exit
export for if read
readonly return set shift
test times trap umask
until wait while
: {}

posted on 2008-03-14 14:03 隨意門 閱讀(215) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲桃花岛网站| av成人免费观看| 国产精品久久二区二区| 欧美成人免费全部| 国产欧美日韩精品a在线观看| 亚洲人体1000| 伊人激情综合| 欧美一级在线视频| 亚洲欧美另类国产| 欧美性jizz18性欧美| 亚洲第一精品福利| 在线不卡免费欧美| 欧美在线观看你懂的| 午夜精品久久久久久久久久久久久 | 亚洲影院色无极综合| 亚洲理论在线| 美女黄毛**国产精品啪啪| 久久嫩草精品久久久精品一| 国产精品久久久久久模特| 亚洲人成网站在线播| 亚洲人成欧美中文字幕| 另类图片综合电影| 欧美激情第五页| 91久久夜色精品国产网站| 麻豆成人综合网| 猛男gaygay欧美视频| 依依成人综合视频| 久久夜色精品国产亚洲aⅴ| 久久综合色播五月| 在线成人www免费观看视频| 久久久一区二区| 亚洲国产精品t66y| 99v久久综合狠狠综合久久| 欧美日韩国产精品一卡| 一区二区三区欧美日韩| 亚洲一区国产| 国产日韩欧美亚洲一区| 欧美夜福利tv在线| 欧美1区2区视频| 亚洲人成77777在线观看网| 欧美激情1区2区| 99国产精品视频免费观看| 亚洲欧美日本日韩| 国产原创一区二区| 免费在线日韩av| 亚洲毛片av在线| 欧美一区激情视频在线观看| 国产视频一区在线| 免费短视频成人日韩| 亚洲乱码国产乱码精品精| 亚洲香蕉伊综合在人在线视看| 国产精品v日韩精品v欧美精品网站| 亚洲视频一区二区| 久久综合久久综合九色| 亚洲免费福利视频| 国产农村妇女精品| 美国三级日本三级久久99| 日韩午夜精品| 久久亚洲精品中文字幕冲田杏梨| 亚洲啪啪91| 国产精品久久久久影院亚瑟| 久久精品二区三区| 亚洲另类一区二区| 久久夜色精品国产| 亚洲综合国产精品| 激情五月综合色婷婷一区二区| 欧美成人一区二免费视频软件| 亚洲天堂网在线观看| 免费观看30秒视频久久| 亚洲色图制服丝袜| …久久精品99久久香蕉国产| 欧美日韩国产一区二区三区地区| 久久9热精品视频| 一区二区高清在线观看| 免费欧美日韩| 欧美在线一级va免费观看| 亚洲精品中文字幕在线| 国产在线观看91精品一区| 欧美日韩国产黄| 毛片基地黄久久久久久天堂| 亚洲一区二区高清| 亚洲精品精选| 狼人天天伊人久久| 欧美一区二区在线观看| 中文欧美字幕免费| 亚洲国产午夜| 黑人一区二区三区四区五区| 国产精品久久综合| 欧美国产综合| 麻豆成人91精品二区三区| 欧美一级理论片| 亚洲视频免费在线| 一区二区欧美国产| 亚洲精品免费在线播放| 亚洲国产成人91精品| 看欧美日韩国产| 久久久久久综合| 久久国产精品久久国产精品| 亚洲欧美视频在线观看视频| 一区二区不卡在线视频 午夜欧美不卡在 | aⅴ色国产欧美| 亚洲精品女av网站| 亚洲国产小视频| 今天的高清视频免费播放成人| 国产午夜精品久久久| 国产毛片一区| 国产亚洲精品bt天堂精选| 国产麻豆精品theporn| 国产精品热久久久久夜色精品三区| 欧美日韩国产综合视频在线观看中文| 麻豆亚洲精品| 欧美激情中文不卡| 欧美精选在线| 欧美午夜剧场| 国产精品久久久久久久久婷婷| 欧美日韩在线播放三区四区| 欧美日一区二区三区在线观看国产免| 欧美国产日本高清在线| 欧美国产先锋| 欧美日韩免费在线| 国产精品盗摄久久久| 欧美午夜精品电影| 国产精品一区三区| 国内成+人亚洲+欧美+综合在线| 韩国成人福利片在线播放| 1024精品一区二区三区| 亚洲精品中文字幕有码专区| 亚洲天堂成人| 欧美在线短视频| 欧美国产精品| 99视频一区| 久久av在线看| 欧美大片在线看| 国产精品视频999| 国产综合精品| 亚洲精品一区在线观看| 亚洲自拍偷拍色片视频| 久久精品卡一| 亚洲七七久久综合桃花剧情介绍| 一区二区三欧美| 久久激情一区| 欧美日韩精品一区二区| 国产欧美一区二区在线观看| 亚洲大片av| 亚洲欧美另类国产| 欧美第一黄色网| 国产精品99久久久久久白浆小说| 久久国产一区二区三区| 欧美日韩1区2区| 国模一区二区三区| 亚洲一区二区精品在线观看| 久久久精品久久久久| 亚洲精品乱码久久久久久日本蜜臀| 中文亚洲字幕| 美女黄毛**国产精品啪啪 | 影院欧美亚洲| 亚洲一级二级在线| 欧美成人精精品一区二区频| 在线亚洲高清视频| 欧美成人午夜影院| 激情视频亚洲| 亚洲欧美国产精品桃花| 亚洲成色777777女色窝| 新狼窝色av性久久久久久| 欧美激情一区三区| 在线观看成人av电影| 午夜在线电影亚洲一区| 亚洲激情校园春色| 久久久久久精| 国产亚洲永久域名| 亚洲综合三区| 亚洲日本成人女熟在线观看| 久久久久久久网| 国产精品日韩一区| 中文精品99久久国产香蕉| 欧美激情一区二区| 久久久免费观看视频| 国产欧美日韩在线播放| 亚洲综合色在线| 亚洲理伦在线| 欧美精品一区二区久久婷婷| 亚洲国产mv| 蜜臀99久久精品久久久久久软件| 亚洲专区欧美专区| 国产精品激情| 亚洲在线视频网站| 国产精品久久久久久五月尺| 在线视频日本亚洲性| 亚洲国产欧美一区二区三区久久| 久久久精品国产免大香伊 | 国产精品另类一区| 亚洲香蕉伊综合在人在线视看| 亚洲电影在线播放| 欧美成人精品h版在线观看| 亚洲国产一区在线观看| 久久综合九色九九| 久久综合九色综合久99| 亚洲国产欧美一区| 亚洲国产日韩欧美在线动漫| 欧美大片在线看免费观看|