本帖最后由 marquis 于 2013-7-16 22:28 編輯
1、設(shè)計(jì)一個程序cuts,它由標(biāo)準(zhǔn)輸入讀取數(shù)據(jù),獲取有第一個參數(shù)n和第二個參數(shù)m所限定范圍的數(shù)據(jù),n和m都是整數(shù),即從輸入的字符串中抽取第n個字符至第m個字符之間的所有字符(包括這兩個字符)并顯示出來。 $ cuts 11 14 This is a test of cuts program(回車) test(顯示結(jié)果) #!/bin/bash 它的作用就是告訴shell,里面的腳本使用那種解析器來執(zhí)行的腳本
read ch;
echo $ch| cut -c $1-$2; #$1和$2分別是命令的第一個和第二個數(shù)
exit;cut是以每一行為一個處理對象的, 字符(characters),用選項(xiàng)-c,中文字符和空格都算一個字符 2、利用for循環(huán)將當(dāng)前目錄下的.c文件移到指定的目錄下,并按文件大小排序,顯示移動后指定目錄的內(nèi)容。 #!/bin/bash for file in `ls|grep “.*.c”` 要用到ESC 下面的符號 { mv -i $file./a -i是文件移動同文件名會有提示 } ls –lS ./a -S是按大小排序 3、編寫一個shell腳本,求斐波那契奇數(shù)列的前10項(xiàng)及總和。 #!/bin/bash i=1 j=0 sum=0 for(( k=0; k<10; k++ )) do echo –n “$i,” -n不能再最后換行 echo輸出流 let sum+=I let 是linux的整數(shù)運(yùn)算命令 let m=i let i+=j let j=m done echo “sum=$sum” 4、編寫一個shell腳本,程序運(yùn)行時,要求輸入兩個數(shù)字。然后判斷數(shù)字的大小,如果兩個數(shù)字的和大于100,就輸出“x+y>100”;如果兩個數(shù)字的和小于等于100并且大于10,就輸出“x+y>10”;如果x>y,則求出x除以y的余數(shù)并輸出“x mod y = ?(把計(jì)算的值代替問號)”,否則求出y除以x的余數(shù)并輸出“y mod x = ?” #!/bin/bash
下載 (19.14 KB)
2013-7-16 22:20
-gt:大于 -le:小于等于 如果上一條命令執(zhí)行后的結(jié)束代碼不是0則執(zhí)行下面的命令(then) 5、編寫一個shell腳本,并利用函數(shù)實(shí)現(xiàn)數(shù)列求和運(yùn)算。即主程序接受兩個數(shù)字,分別作為數(shù)列頭和數(shù)列尾,如果第一個數(shù)字不小于第二個數(shù)字則輸出“wrong number”,否則將這兩個數(shù)字傳遞給函數(shù);函數(shù)把這兩個數(shù)字中間的數(shù)字加起來求和,并輸出。 如:當(dāng)輸入 3 6時,函數(shù)計(jì)算 3+4+5+6的值并輸出。
下載 (14.26 KB)
2013-7-16 22:20
Function shulie()是一個函數(shù),shulie $a $b 是傳遞參數(shù)給函數(shù) 6、編寫特洛伊木馬shell腳本。以文本方式登陸界面,接收用戶輸入的名字和密碼。一旦用戶在這種偽裝界面登陸,就獲取用戶名和密碼,并保存在指定的文件中。接著睡眠幾秒,然后顯示錄入錯誤的信息,使用戶以為輸入有誤。最后在調(diào)用真正的登陸程序,允許用戶正常登陸。
7、編寫shell腳本,創(chuàng)建一個5個元素的數(shù)組,輸出各個元素的值
下載 (7.59 KB)
2013-7-16 22:20
A是數(shù)組名,初始化A數(shù)組的值,以空格隔開 8、編寫一個腳本,用于統(tǒng)計(jì)所指定文件的行數(shù)總數(shù)。輸出結(jié)果為各個文件的名字+行數(shù),以及總行數(shù)。 如:當(dāng)輸入./腳本名 file1 file2,腳本計(jì)算file1和file2兩個文件的總行數(shù)
下載 (2.77 KB)
2013-7-16 22:20
-l 是統(tǒng)計(jì)行數(shù)的參數(shù) 9、編寫一個shell腳本,根據(jù)鍵盤輸入的值,給出對應(yīng)的提示;輸入[A – Z ],輸出Uppercase Letter;輸入[a-z],輸出Lowercase Letter;輸入[0-9],輸出Digit;輸入其他,輸出Punctuation,whitespace, or other
下載 (19.41 KB)
2013-7-16 22:20
1. 在腳本最前面加入如下句: export LC_ALL=C
作用就是 specifies the ANSI C locale
2. 將判斷條件作如下改動(改為符合POSIX標(biāo)準(zhǔn)的集合):
[A-Z] 改為 [[:upper:]]
[a-z] 改為 [[:lower:]]Case要在每個條件末尾加;; esac 10、編寫shell腳本,提示用戶輸入用戶名,并判斷此用戶名是否存在與系統(tǒng)用戶中
下載 (11.28 KB)
2013-7-16 22:20
grep "$name"/etc/passwd > /dev/null 2>&1 //探索與變量name內(nèi)相匹配的字符
不管結(jié)果是是否正確信息扔到/dev/null垃圾箱
2>&1不顯示任何信息操作信息
if [ $? -eq 0 ] ;then
//判斷$? 是否等于 0 $?里的數(shù)值跟你上一個命令執(zhí)行的成功與否有關(guān)
//如果你可以通過輸入一條命令進(jìn)行試驗(yàn)
然后通過
//pwd;echo $? $?結(jié)果為0
//asdfasdf;echo $?結(jié)果127
|