當前位置:首頁 » 編程軟體 » 計數器腳本

計數器腳本

發布時間: 2023-09-25 04:21:10

linux借用外部命令expr,實現計算器功能,利用管道,進程

test指令(使用指令man查詢)

功能:檢查文件類型,值比較。

test的各種參數和使用。

test EXPRESSION1 –a EXPRESSION2

當表達式1和表達式2同時為真時值為真

test EXPRESSION1 –o EXPRESSION2

當表達式1或者表達式2為真時值為真

test –n STRING

或者

test STRING

當STRING串的長度不為零時值為真

test –z STRING

當STRING串長度為零時值為真

test STRING1 = STRING2

當STRING1和STRING2相同時值為真

test STRING1 != STRING2

當STRING1 和 STRING2不同時值為真

test INTEGER1 –eq INTEGER2

當INTEGER1等於INTEGER2時值為真

test INTEGER1 –ge INTEGER2

當INTEGER1大於或者等於INTEGER2時值為真

test INTEGER1 –gt INTEGER2

當INTEGER1 大於INTEGER2時值為真

test INTEGER1 –le INTEGER2

當INTEGER1小於等於INTEGER2時值為真

test INTEGER1 –lt INTEGER2

當INTEGER1 小於INTEGER2時值為真

test INTEGER1 –ne INTEGER2

當INTEGER1不等於INTEGER2時值為真

test FILE1 –ef FILE2

當FILE1和FILE2有同樣的device和inode號時為真(詳細見linux文件學習筆記)

test FILE1 –nt FILE2

當FILE1修改時間比FILE2新時值為真

test FILE1 –ot FILE2

當FILE1修改時間比FILE2舊時值為真

test –b FILE

FILE存在並且內容是block類型的

test –c FILE

FILE存在並且是字元類型的

test –d FILE

FILE存在並且是一個目錄

test –e FILE

FILE是否存在

test –f FILE

FILE存在並且是一個正則表達式類型的文檔

test –g FILE

FILE存在並且是 set-group-ID也就是SGID(詳細見後文學習筆記)

test –G FILE

FILE存在並且由有效的GROUP ID所擁有(詳細見後文學習筆記)

test –h FILE

FILE存在並且是一個符號鏈接(詳細見後文學習筆記)

test –k FILE

FILE存在並且設置了sticky bit set(詳細見後文學習筆記)

test –L FILE

FILE存在並且是一個符號鏈接

test –O FILE

FILE存在並且由一個有效的USER ID所擁有

test –p FILE

FILE存在並且是一個命名管道(命名管道見後文學習筆記)

test –r FILE

FILE存在並且授予了可讀的許可權

test –s FILE

FILE存在並且size大於0

test –S FILE

FILE存在並且是一個socket

test –t FD

文件的描述符FD在終端打開

test –u FILE

FILE存在並且SUID已經被設置

test –w FILE

FILE存在並且授予了寫操作許可權

test –x FILE

FILE存在並且授予了可執行的許可權

----------------------------------------------------------------------------------------------------------------------------------------------------

expr

expr是linux的手工命令行計數器,它可以幫助我們完成一些基本的表達式值運算。同時它也是一個字元串處理工具

(1) 整數運算

$expr ARG1 | ARG2

$expr ARG1 & ARG2

$expr ARG1 < ARG2

$expr ARG1 <= ARG2

$expr ARG1 = ARG2

$expr ARG1 != ARG2

$expr ARG1 >= ARG2

$expr ARG1 > ARG2

$expr ARG1 + ARG2

$expr ARG1 – ARG2

$expr ARG1 * ARG2

使用乘法時,需要使用反斜杠進行轉義

$expr ARG1 % ARG2

(2) 字元串操作

$expr length 「xxx」 //計算字元串長度

$expr substr 「this is a」pos length //從第pos位開始截取length長度的子串

$expr index 「tesr」e //獲取e在主串中首次出現的位置

(3) 增量計數

例子

loop=3

loop=`expr $loop + 1`

echo $loop

結果是4,在第二行代碼中,使用反引號,shell會將反引號中的內容作為一個系統命令,這樣一來,就好像我們在命令行內輸入了expr $loop + 1然後這個命令的返回結果被賦值到loop。

(4) 模式匹配(按照正則表達式模式匹配串)

通過指定冒號選項計算字元串中字元數。.*意即任何字元重復0次或多次。

> VALUE=account.doc

> expr $VALUE : 』.*』

8

在expr中可以使用字元串匹配操作,這里使用模式抽取.doc文件附屬名。

$expr $VALUE : 『\(.*\).doc』

accounts

(5) 其他

+ TOKEN

將TOKEN解釋為串,不管它是一個關鍵字或者一個操作符

延伸知識:

引號的作用

1 雙引號(「」)

1)使用」」可引用除字元$(美元符號)、`(反引號)、\(反斜線)外的任意字元或字元串。雙引號不會阻止shell對這三個字元做特殊處理(標示變數名、命令替換、反斜線轉義)。

Eg:name=gezn; echo 「User name:$name」//將列印User name :gezn

Echo 「The date is:`date +date-%d-%m-%Y`」//將列印The date is: 03-05-2009

Echo –e 「$USER\t$UID」 //將列印gezn 500

2)如果要查新包含空格的字元串經常用到雙引號

2 單引號(』』)

1) 如果用單引號把字元串括起來,則dayi9nhao內字元串中的任何特殊字元的特殊含義均被屏蔽。

2) 舉例:echo –e 『$USER\t$UID』//將列印$USER $UID(沒有屏蔽\t,是因為選項「-e」的緣故)

echo 『USER\t$UID』 //將列印$USER\t$UID

3 反引號(``)

1) shell將反引號中的內容作為一個系統命令,並執行其內容。使用這種方法可以替換輸出為一個變數

2) 舉例:a=`date + date-%d-%m-%Y` //將列印The date is: 03-05-2009

4.反斜線(\)

1)如果下一個字元有特殊含義,反斜線防止shell誤解其含義,即屏蔽其特殊含義。

2)下屬字元包含有特殊含義:& * + $ ` 「 | ?

3) 在列印字元串時要加入八進制字元(ASCII相應字元)時,必須在前面加反斜線,否則shell作普通數字處。

舉例: bj=Beijing; echo 」variable\$bj=$bj」//將列印variable $bj = beijing

------------------------------------------------------------------------------------------------------------------------------------------------

Shell特殊變數

在Shell中,預先定義了幾個有特殊含義的Shell變數,它們的值只能由Shell根據實際情況進行賦值,而不能通過用戶重新設置。shell的特殊變數包括它的位置和一些系統變數.

(一)常用位置變數:

$# 命令行上實際參數的個數,但不包含Shell腳本名。
$? 上一條命令執行後的返回值(也稱作 「退出碼」)。它是一個十進制數。多數Shell命令執行成功時,則返回值為0;如果執行失敗,則返回非0值。
$$ 當前進程的進程號。
$! 上一個後台命令對應的進程號,這是一個由1~5位數字構成的數字串。
$- 由當前Shell設置的執行標志名組成的字元串。例如:
set -xv 這個命令行給Shell設置了標志-x和-v(用於跟蹤輸出)。
$* 表示在命令行中實際給出的所有實參字元串,它並不僅限於9個實參。
$@ 它與$*基本功能相同,但是使用時加引號,並在引號中返回每個參數
$0 腳本名稱
$1..$9 第N個參數

下面的aaa bbb 為變數名

${aaa:-bbb} 如果$aaa為空或未定義,則取值$bbb.否則取值$aaa

${aaa:+bbb} 如果$aaa非空,則取值$bbb,否則取值為空

${aaa:=bbb} 如果$aaa非空,則取值$aaa,否則取值$bbb而且賦值(aaa=bbb)

${aaa:3} 如果aaa=abcdefg,則${aaa:3}的值為:defg ,相當於substr,計數從0開始

${aaa:3:2} 如上; ${aaa:3:2}取值為: de.相當於substr

${#aaa} 字元串$aaa的長度.

(二)常用系統變數:
$HOME 用戶的主目錄
$USER 用戶名稱
$GROUP 用戶所屬組名
$PATH 默認的搜索路徑
$HOSTNAME 主機名稱
$TZ 時區
$MAIL 存放郵件的路徑名

練手:

#!/bin/bash

echo $0

echo $*

echo $@

echo $#

echo $$

echo $_

在terminal窗口中執行:

./test.sh -a -b –c /home

./test.sh

-a -b -c /home

-a -b -c /home

4

3250

/home

區別$*和$@編寫如下test.sh腳本:

#!/bin/bash

function testargs

{

echo "$# args"

}

testargs "$*"

testargs "$@"

unset -f testargs

在terminal窗口中執行:

./test.sh -a -b /home

1 args //很明顯就一個嘛,傳入的是$*這個串,不是解釋後的參數

3 args //$@必須和引號搭配,所以結果正確

#!/bin/bash

function testargs

{

echo "$# args"

}

testargs $*

testargs $@

unset -f testargs

再次執行有:

./test.sh -a -b /home

3 args

3 args

作者:Aga.J
出處:http://www.cnblogs.com/aga-j

㈡ Linux編寫一個Shell腳本

#!/bin/sh

#定義一個變數i並賦初值0;
i=0
#定義一個while循環結構,條件表達式為判斷i值是否小於9,i為其計數器;
while test $i -lt 9
do
# 在循環結構內分別是三個if分支結構,分別判斷i=0、i=1和i>1的情況;
# 如果i=0,輸出i,並給 賦值( 用變數n代替);
if test $i -lt 1;then
n=$i
echo $n
#如果i=1,輸出i,並給 賦值( 用變數m代替);
elif test $i -eq 1;then
m=$i
echo $m
#如果i>=1,計算m+n(即 + )的值賦給 ( 用變數v代替),輸出v,
elif test $i -gt 1;then
v=`expr $m + $n`
echo $v
fi
i=`expr $i + 1`
done

㈢ 網站訪客計數器怎麼做

訪客計數器是讓 Web 訪客知道該網頁或者網站的人氣指數最直接的方法。尤其是想利用網頁賺錢的人,訪客人數是找廣告商最好的說詞。當然可以將網站來訪人數寫成統計報表,但總是感覺直接看到比較真實,到底眼見為憑。
訪客計數器的流程如下 :
第一位使用者瀏覽某頁。
伺服器程式從資料庫或檔案中讀取該頁被瀏覽次數。
將次數加一儲存,並將它送回第兄差一位使用者。
第二位使用者瀏派棗覽某頁。
伺服器程式從資料庫或檔案中讀取該頁被瀏覽次數。
將次數再加一儲存,並將它送回第二位使用者。
所以記數器的原理是很簡單的,但是你要是想做一個又全面,又美觀的記數器就要花點點時塵塵拆間了。
但是你可以從最簡單的做起。

熱點內容
禮儀講話腳本大全視頻 發布:2024-11-18 20:17:44 瀏覽:710
c語言通訊錄程序設計 發布:2024-11-18 19:35:21 瀏覽:99
微信下載的圖片在哪個文件夾 發布:2024-11-18 19:23:06 瀏覽:359
我的世界查伺服器ip地址 發布:2024-11-18 19:23:04 瀏覽:213
電腦加裝存儲硬碟不影響速度吧 發布:2024-11-18 19:21:52 瀏覽:694
伴生氣壓縮機 發布:2024-11-18 19:21:40 瀏覽:878
javalinux環境變數設置 發布:2024-11-18 19:20:58 瀏覽:843
按存取方式來分主存儲器 發布:2024-11-18 19:20:55 瀏覽:223
安卓屏幕如何升級 發布:2024-11-18 19:01:19 瀏覽:479
磁碟密碼在哪裡看到 發布:2024-11-18 19:01:16 瀏覽:885