




下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、shell 腳本例子集錦(習題總結)練習一:寫一個腳本1. 設定變量FILE 的值為 /etc/passwd2. 依次向 /etc/passwd 中的每個用戶問好,并且說出對方的ID 是什么形如:(提示:LINE='wc -l /etc/passwd | cut -d" " -fl')Hello,root , your UID is 0.3. 統計一個有多少個用戶答案一:#!/bin/bashfile="/etc/passwd"LINES='wc -l $file | cut -d" " -f1'for
2、 I in 'seq 1 $LINES'douserid='head -$I $file | tail -1 |cut -d: -f3'username='head -$I $file | tail -1 |cut -d: -f1'echo "hello $username,your UID is $userid"doneecho "there are $LINES users"答案二:#!/bin/bashfile=/etc/passwdlet num=0for I in 'cat $file
3、39;dousername='echo "$I" | cut -d: -f1'userid='echo "$I" | cut -d: -f3'echo "Hello,$username,your UID is $userid"num=$num+1doneecho "there are $num users"練習二:寫一個腳本1. 切換工作目錄至/var2. 依次向 /var 目錄中的每個文件或子目錄問好,形如:(提示:for FILE in /var/*; 或 for FILE in
4、 'Is /var')Hello,log3. 統計 /var 目錄下共有多個文件,并顯示出來答案: #!/bin/bashcd /varlet num=0for I in 'ls /var/*'doecho "hello $I"num=$num+1doneecho "the number of files is $num"練習三:寫一個腳本1. 設定變量file 的值為 /etc/passwd2. 使用循環讀取文件/etc/passwd 的第 2,4,6,10,13,15 行,并顯示其內3. 把這些行保存至/tmp/myp
5、asswd 文件中答案: #!/bin/bashfile="/etc/passwd"for I in 2 4 6 10 13 15;doexec 3>/tmp/mypasswdline='head -$I $file | tail -1'echo "$line"echo "$line" >&3exec 3>&-done練習四:寫一個腳本傳遞兩個整數給腳本,讓腳本分別計算并顯示這兩個整數的和,差,積,答案如下:vim test.sh#!/bin/bashecho "first
6、number $1"(表示輸出第一個數)echo "second number $2"(表示輸出第二個數)echo " $($1+$2)"(輸出兩數之和)echo "$1-$2"(輸出兩數之差)echo "$1*$2"(輸出兩數之積)echo "$1/$2"(輸出兩數之商):wqvi 編輯器)chmod +x test.shtest.sh 執行的權限)./test.sh 2 3(傳遞兩個參數并執行腳本作業一:寫一個腳本:1. 創建目錄/tmp/scripts2. 切換工作目錄至此目錄中
7、3. 復制 /etc/pam.d 目錄至當前目錄,并重命名為test4. 將當前目錄的test 及其里面的文件和子目錄的屬主改為redhat5. 將 test 及其子目錄中的文件的其它用戶的權限改為沒有任何權限答案:#!/bin/bashmkdir -v /tmp/scriptscd /tmp/scriptscp -r /etc/pam.d ./testchown -R redhat ./testchmod -R o=- ./test作業二:寫一個腳本1. 顯示當前系統日期和時間,而后創建目錄/tmp/lstest2. 切換工作目錄至/tmp/lstest3. 創建目錄a1d , b56e ,
8、 6test4. 創建空文件xy, x2y , 7325. 列出當前目錄下以a, x 或者 6 開頭的文件或目錄6. 列出當前目錄下以字母開頭,后跟一個任意數字,而后跟任意長度字符的文件或目錄答案:#!/bin/bashdatemkdir -pv /tmp/lstestcd /tmp/lstestmkdir a1d b56e 6testtouch xy x2y 732ls ax6*ls :alpha:digit:*作業三:寫一個腳本添加 10 個用戶 user1 到 user10 ,但要求只有用戶不存在的情況下才能添加答案:#!/bin/bashfor I in 'seq 1 10
9、39;docut -d: -f1 /etc/passwd |grep "user$I" 2>>/tmp/etc.err |useradd user$Idone作業四:寫一個腳本通過 ping 命令測試192.168.0.151 到 192.168.0.254 之間的所有主機是否在線如果在線,就顯示“ip is up ”如果不在線,就顯示“ip is down ”答案: #!/bin/bashfor I in 'seq 151 254'doping -c1 -w1 192.168.0.$I &>/dev/null &&
10、 echo "192.168.0.$I isup" | echo "192.168.0.$I is down"done例題:shell1.sh 顯示日期和時間。#!/bin/bashecho “ current time is 'date'” /date 要加反引號shell2.sh 顯示文件名,并顯示位置參數(執行時帶一個參數) 。 ( $0是一個特殊的變量,它的內容是當前這個shell程序的文彳名;$1是一個位置參數,位置參數之間用空格分隔,shell 取第一個位置參數替換程序文件中的 $1 ,第二個替換$2 ,依次類推。)#!/bi
11、n/bashecho “ the program name is $0”/ $0 是一個特殊的變數/ $1 是一個位置參數echo “ the first para is $1如 ./shell2.shecho “ the program exit ”/ 執行時帶一個參數abcdshell3.sh 判斷并顯示位置參數#!/bin/bashif - d “ $1” ;thenecho “ $1 is directory ,existed”elseecho “ $1 does not exist ,now create it”mkdir $1echo “ $1 is created ”fi / 執
12、行時帶一個參數shell4.sh 問候用戶#!/bin/bashuser='whoami'case $user inteacher)echohello teacherroot)echo “ hello root ” ;*)echo “ hello $user,welcome ”esac1 、 求1+2+3+.+100 的和是?#!/bin/bashSUM=0I=0while $I -le 100 doSUM=$(SUM+I)I=$(I+1)doneecho " 由 1+2+3+.+100 的和是 :$SUM"2 、 (基訓十一) 在根目錄下有四個文件m1.t
13、xt , m2.txt , m3.txt ,m4.txt ,用 Shell 編程,實現自動創建m1,m2,m3,m4 四個目錄,并將 m1.txt,m2.txt,m3.txt,m4.txt 四個文件分別拷貝到各自相應的目錄下#!/bin/bash cd /touch m1.txt m2.txt m3.txt m4.txtI=1while $I -le 4 domkdir m$Icp m$I.txt m$II=$(I+1)done3 、 (基訓十二) 編寫一個名為myfirstshell.sh 的腳本,它包括以下內容。 a) 包含一段注釋,列出您的姓名、腳本的名稱和編寫這個腳本的目的。b) 問候
14、用戶。c) 顯示日期和時間。d) 顯示這個月的日歷。e) 顯示您的機器名。f) 顯示當前這個操作系統的名稱和版本。g) 顯示父目錄中的所有文件的列表。h) 顯示 root 正在運行的所有進程。i) 顯示變量TERM 、 PATH 和 HOME 的值。j) 顯示磁盤使用情況。k) 用 id 命令打印出您的組ID 。m) 跟用戶說“Good bye ”#!/bin/bash# 09 嵌入 5 號 賈德進 myfirstshell.sh shelluser='whoami'case $user inroot)echo "hello root"teacher)ech
15、o "hello teacher"*)echo "hello $user,welcome"esacecho "日期和時間:'date'"echo "本月的日歷:'cal'"echo " 本機的機器名:'uname -n'"echo " 當前這個操作系統的名稱和版本:'unameecho " 父目錄中的所有文件的列表:'ls ./'"的簡單編程-s;uname -r'echo "
16、root 正在運行的所有進程:' ps -u root'"echo " 變數TERM 的值 :$TERM"echo " 變數PATH 的值 :$PATH"echo " 變數 HOME 的值 :$HOME"echo "磁盤的使用情況:、df"echo "用id命令打印出你的組ID:'id -g'"echo "Good bye!"4 、 (基訓十三) 設計一個Shell 程序,在/userdata 目錄下建立50個目錄,即useri us
17、er50 ,并設置每個目錄的權限為 rwxr-xr 一#!/bin/bashcd /userdataI=1while $I -le 50 domkdir -p userdata/user$Ichmod o-x user$II=$(I+1) done5 、 (基訓十四) 編寫 shell 程序, 實現自動刪除50 個用戶賬號的功能。賬號名為stud1 至 stud50 。#!/bin/bash cd /userdataI=1while $I -le 50 domkdir -p userdata/user$Ichmod o-x user$II=$(I+1)done6 、 (基訓十四) 設計一個sh
18、ell 程序,備份并壓縮/etc 目錄的所有內容,存放在 /root/bak 目錄里, 且文件名為如下形式yymmdd_etc , yy 為年, mm 為月,dd 為日。#!/bin/bashDIRNAME='ls |root|grep bak 'if -z $DIRNAME ; thenmkdir /root/bakcd /root/bakfiYY='date + %y'MM='date + %m'DD='date + %d'tar czvf $YY$MM$DD_etc.gz /etc echo "etc bak fi
19、nshied"7 、 ( 基訓十四) 某系統管理員需每天做一定的重復工作,請按照下列要求,編制一個解決方案:( 1 )在下午4 :50 刪除 /abc 目錄下的全部子目錄和全部文件;( 2 )下午 5:50 將 /data 目錄下的所有目錄和文件歸檔并壓縮為文件:backup.tar.gz ;( 3)在下午5:55 將 IDE 接口的第二個邏輯分區卸載。/ 采用: vi pram.cron#(1) 在下午 4:50 刪除 /abc 目錄下的全部子目錄和全部文件;50 16 * rm -rf /abc/*#(2) 下 午 5:50 將 /data 目 錄 下 的 所 有 目 錄 和 文
20、 件 歸 檔 并 壓 縮 為 文 件 :backup.tar.gz;50 17 * tar czvf back.tar.gz /data#(3) 在下午 5:55 將 IDE 接口的第二個邏輯分區卸載.55 17 * umount /dev/hda6/ 執行: crontab pram.cron 設計一個Shell程序,在/userdata 目錄下建立50個目錄,即useriuser50 ,并設置 每個目錄的權限,其中其他用戶的權限為:讀;文件所有者的權限為:讀、寫、執行;文件 所有者所在組的權限為:讀、執行。程序實現及注釋如下:#! /bin/bash#adddir.sh i=1#while
21、循環while $i -le 50 do#利用test命令-d/userdata :判斷/userdata 是否存在,如果存在直接創建子目錄, 不#存在先創建/userdata再創建子目錄。if -d /userdata then#mkdir-p的意思是:無論父目錄/userdata存在與否,都會創建/userdata/user$imkdir -p /userdata/user$ielsemkdir /userdatamkdir -p /userdata/user$ifi#根據題目的意思:/userdata/user$i 應該是具有754權限,所以利用 chmod賦權限。chmod 754 /
22、userdata/user$ii=$($i+1) done函數in_path :判斷傳入文件是否可執行,若可執行(且存在)返回0,否則返回1;分析:為測試傳入文件是否在PATH所有的目錄中,需取得 PATH中的每個路徑,可用循環,但需要設定環境中的分隔符(借助環境變量IFS)為PATH中的分隔符冒號“:"注:$IFS輸入分隔符.當shell讀取輸入數據的時候,會把一組字符看做是單詞之間的分隔字符,它們通常是空格,制表符,和換行符.函數調用方式為:in_path filenamein_path()cmd=$1# $1為函數的參數1 ,以此類推retval=1#定義返回值變量oldIFS
23、=$IFSIFS=:#設置新的IFS,并保存原來的以恢復使用for directory in $PATH#for 循環結構二:for - indoif -x directory/$cmd ; then#if條件語句之 同行表示 以分號隔開retval=0# -x判斷文件有是否有可執行權限done doneIFS=$oldIFS#恢復原來 IFS,return retval 注:1.函數的結構,沒有形參2 .變量的引用需要符號$,而變量的定義或賦值則不需要。3 .賦值要無間隙,條件要間隙改進:1.將路徑、分隔符均作為函數的參數傳入,應用得到擴展。補充,in_path函數不能對絕對路徑的文件處理,
24、需寫個函數對這一情況單獨處理 checkForCmdInPath() var=$1#首先判斷傳入的非空串是否為絕對路徑,即檢測第一個字符是不是"/",如果是7域接測if $var !="" ; then # 條件等價于-n $varif " $var%$var#?" = then ;#等價于 $(echo $var | cut -c1)if ! -x $var ; thenreturn 1#not found or not executablefielif ! inpath $var ; then return 2#not found
25、 in PATHfi fi 注:此函數讓人一頭霧水,詳解如下:1) 表達式$var%$ var#? 作匹配用,分解為 $var%expr $var#expr , expr為正則表達式(?匹 配單一字符)后者(帶#的)返回expr與var匹配成功位置之后的所有內容,此處為var中第一字符之后的所有。前者(帶的)返回expr與var匹配成功位置之前的所有內容,此處應為var的第一個字符。等價于 $(echo $var | cut c1 )即取第一字符。等價于 $var:beginpos:size 中 beginpos=0 , size=1 時的結果。var的符號放在外面了,假設 $var為$1,則
26、表達式表示為 $1%$1#?2)關于if的條件判斷與C語言中的理解不一致,反映在上述的elif語句中的條件。理解如下:shell中的if條件可以是 表達式(需加方括號口),另外還可以是命令或函數(不需方括號),當命令執行成功時會后繼執行具體操作,經測試,C語言中所說的true在shell中 用0表示,即if 0 ,才執行then ,因為linux下的程序實現都是當返回0時表執行成功。3)若函數中沒有返回值,則它默認返回0,表執行成功。函數的編寫若遵從以上的原則,則對條件的理解 依舊像C語言中的TRUE,FALSE 一樣理解=完善程序代碼=#!/bin/bashin_path().#函數實現區域
27、 處理不路徑返回0表找到、可執行,否則返回1#checkForCmdInPath().#函數實現區域 沒找到。默認0表找到處理帶路徑和不帶路徑的返回1表沒找到或不可執行, 返回2表#代碼執行起始位置#if $# -nq 1 ; thenecho “ Usage: $0 command ”行此文件時的輸入串為準)exit 0fi#調用函數,并經第一個參數傳給函數checkForCmdInpath $1#$0表此執行文件(具體內容 以 執#對函數返回的結果進行判斷$? 為函數的返回值,case $? in# case 控制結構的格式,注意紅色部分。0)1)2)defaultechofound in
28、 PATH;echo “not found or not executable;”echo "not found "#*);類似于 C 語言中的2 .寫一個腳本,檢測用戶輸入串的合法性,要求串由大小寫字母、數字組成,無標點、特殊符號、空格。思路:將輸入的串中非字母數字的內容刪除或替換為空后若和原來輸入的相同則合法,否則不合法。isvalidAlphaNum() ( compressed= " $(echo $1 | sed 's/A:alnum:/g')#替換不合要求字符為空if “ $compressed " !=" $1 &
29、quot; ; thenreturn 1# not valideelsereturn 0# validefi )注:1.關于引用變量時是否需要雙引號的說明 如果只是輸出,可以不用雙引號如果變量值代的內容中無空格,表達,特殊符號,在引用時可以不需要雙引號,反之,最好帶雙引 號,否則在變量處理時很有可能會出現“參數過多”等莫名其妙的錯誤信息。2.關于匹配處理,sed是單行編輯程序。sed ' s/str1/str2/g 'file 將文件file中每行內str1替換為str2:alnum:表示所有字母和數字中的任一個字符。若只是:alnum:則表示方括號中的任一個字符。A:alnu
30、m:表除了所有字母數字外的任一字符。如果是直接向腳本傳字符串,則帶空格的字串會被腳本自行分解為多個參數,所以可采用從標準輸入讀取 的方式獲得字串。=完善程序代碼=#!/bin/bashisvalidAlphaNum().#函數體,判斷字串的合法性echo -n " Enter input:# -n強制不換行read input#讀取內容存到input中,無$符號if ! isvalidAlphaNum" &input ” ; then#加引號,否則可能會出錯。echo “ invalide ” exit 1elseecho “ valide ” fiexit 03
31、輸入一個“ month day year ”格式的日期串,程序將處理”month 其英文單詞 ”為的前三個字母,第一個字母大寫,其余的小寫。思路: 首先判斷month 是數字、 還是單詞,若是數字,則可查 “數字 month ” 映射表 (自定義 case 結構) ;若是單詞,則取前三個字母,并格式化。函數 monthnoToName () 將 month 數字轉換為month 名monthnoToName() case $1 in1 ) month="Jan" 2 ) month="Feb"3 ) month="Mar" 4 ) m
32、onth="Apr"5 ) month="May" ; 6 ) month="Jun"7 ) month="Jul" ; 8 ) month="Aug" ;9 ) month="Sep" ;10) month="Oct" ;11) month="Nov" ;12) month="Dec" ;* ) echo "$0: Unknown numeric month value $1" >&
33、;2; exit 1# default,esac#return 0假設通過傳三個參數到腳本 month day year 實現代碼#!/bin/bashif $# -ne 3 ; then#若參數個數不為3,則有誤echo “ Usage: $0 month day year”exit 1fi#判斷參數1 是數字還是單詞,方法替換串中所有數字,若結果為空,則為數字,否則為單詞。if - n $(echo $1 | sed :dsig/it: / g ) # -n 檢測串是為空thenmonthnoToName $1# 數字else# 取第一個字母并將其變為大寫,再將結果與取出的第二三字母組合m
34、onth= " $(echo $1 | cut cl | tr ':lower:' ':upper:')month= ” $month$(echo $1 | cut -c2- 3 | tr ':upper:' ':lower:')fi# 輸出結果echo $month $2 $3exit 0注: 1. 外圍可以使用函數中定義的變量, 如函數 monthnoToName 中定義的month 變量,最后 echo 會用到它。2. 多管道(| )的使用3. month變量的合并,$var$var4. tr SET1 SET2
35、轉換/刪除/替換 命令, 將默認 將SET1 替換為 SET2 tr默認從標準輸入讀取,處理后 寫入 標準輸出。5. cut - c2-3 file取文件每行第 2 , 3字母。擴展: 處理MM/DD/YYYY or MM-DD-YYYY 的形式。在判斷三個參數前執行命令 set - $(echo $1 | sed 's/ -/g')。 set的-命令可以將其后的參數賦予位置參數($1,$2,.)。鏈接set指令用法4. 格式化輸出大數字,使輸出結果更容易讓人知道該輸出數字的數量級。默認用逗號分隔整數部分,用點號分隔整數與小數部分,當然用戶也可以使用-d指定整數的分隔符,用-t
36、 指定整數與小數部分的分隔符。算法: 1232342142.423023=> 默認: 1,232,342,142.423023(1)首先分開整數部分integer 和小數部分decimal , sed - d. -f1 和sed - d.-f2分別取兩部分。( 2 )整數部分的處理:當作數字來處理%運算/ 運算1 )每次取整數低三位,長度小于3 就補前綴0(避免出現漏0 情況,例如低三位為 003 時,取后便為值3)2 )將此次得到的三位與上一次得到的三位用分隔符(如果沒有指定就默認)組合起來。3 )整數去掉低三位,繼續操作1 ) 。當此整數小于等于999 就不再繼續。當字串來處理: 1
37、)每次取低三位,cut - c $($#str - 2)-$#str$#str 為 str 的長度,必須為大括號 。$( ) 的內部為str 長度 -2 ,代表倒數低三個字符。因為內部是減法,所有此為 雙小括號。2 )原串每次都要裁掉尾部三個字符,每次取到的字串的長度為循環判斷條件。函數 nicenumber() 作如上處理nicenumber()# 傳入 integer.decimal 如 2000023.2 ,32232332 等# 分別取 整數部分和小數部分integer=$(echo $1 | cut- d. - f1)decimal=$(echo $1 ! cut- d. - f2)
38、# 判斷小數部分是否存在,因為這涉及連接整數和小數的連接符問題# 設 DD 為 整數和小數之間分隔符,默認為.if - n $decimal ; then#若非空,即有小數部分。# 以下四句可用一句表示:result=$DD”:= ” . ” $remainder$result ”if -z $DD ; then#判斷用戶是否自定義整數與分隔符,若空DD=.firesult=$DD$decimal# 在小數部分前加分隔符。fi thousand=$integerwhile thousand - gt 999 doremainder=$(thousand%1000)while $#remaind
39、er - It 3 ;do remainder 串的長度remainder=0$remainder時的丟 0 情況。 done#$#remainder# 避免 remainder為 00xthousand=$($thousand/1000)#以下四句可用一句表示:result=$TD:” = ” , ” $remainder$result# 上面藍色部分表:若TD 非空則返回TD ,否則將”, ”賦給 TD.if -z $TD ; then#判斷用戶是否自定義整數分隔符若空TD=, fi result= ” $TD$remainder$result 順序doneif - n $thousand
40、 ; then result=” $thousand$resultelif $result%$result#? =result=” $result#? ”fi echo $result”# 與分隔符合成串。注意# 若 非空”“ $TD” ; then腳本標志參數處理命令:getopts “” var帶兩個參數,第一個參數為帶解析的參數標志序列串(如-f,-c 等) , 以冒號(:)分隔各標志,且以冒號:結束第二個參數為:變量,每執行一次存放參數標志序列串中的一個標志字符返回值:未解析結束返回0 ,解析結束返回1涉及的內定變量:$OPTARG 每次解析標志對應的參數值便默認存放在此變量內。$OP
41、TIND 當各標志處理無誤情況下,該數值指示當前用到的此值使用容易出錯(若參數的判斷不完善時), 還不如用=> 此時 $# 等于 4,各個位置參數的值向一次向左右1 次,此時$1 的值 為原各個位置參數的值向一次向左右2 次,此時$1 的值 為原最大位置參數($# ) 。$#另外 $1, $2, $3, $4, 當執行shift 1 時,$2 的值當執行shift 2 時,$3 的值。完整代碼 nicenumber.shnicenumber()# 函數實現部分#處理腳本標志參數while getopts “ d:t: op”tdocase $opt in# $opt為 具體的標志字符d
42、) DD=” $OPTARG”;# $OPTARG 為標志指定的參數值t ) TD=” $OPTARG”;* ) echo “ no arg-flag: $opt ” >&2 exit 1esacdone# 當腳本接收如此多的參數時,$1 將不代表腳本最終要處理的大數字,所以做如下操作。shift $($OPTIND - 1)nicenumber $1exit 0擴展:1. 不同國家整數與小數的分隔符不同,使腳本能夠處理各種整數與小數各種分隔符情況。在傳給腳本參數時需指定標志-d程序中僅需在分隔 整數與小數部分略修改為integer=$(echo $1 | cut"-
43、d$DD:= " .f1 )”-decimal=$(echo $1 | cut"- d$DDf2 )-2. 另外,可以在程序執行之前分別初始化DD,TD 默認值。3. 檢測傳給腳本的大數值中是否含有非法的整小數分隔符,即存在與用戶指定或默認分隔符不同的符號。方法:刪除其中所有數字,看剩下的內容,若不空且不等于$DD ,則非法separator= ” $(echo $1 | sed s/:digit:/g ) ”if -n $separator &&“ $separator ” !=“ $DD” ;then # 藍色部分可用 一a表不exit 1fi5.檢測輸
44、入整數的合法性,可負數(-1,-2均合法),可以指定傳入整數范圍,不在 范圍內則報錯。參數:1或3個,當3個時,后兩個為范圍。 合法性:正負數的判斷,范圍的判斷。validint() integer=$1min=$2 max=$3#判斷傳參的合法性,以下判斷是錯誤的,因為不管參數是否為空,實際上都傳了 三個參數。if $# -eq 0 ;then#改成判斷$1的內容是否為空,就可以echo" you couldnt do nothing" &2 return 1- fi# 判斷是否為負數,第一個字符是否為-,如是,則判斷后面的是否為整數。若非負,則判斷是否為整數if
45、 “ $(echo $1 | cut- c1>'" =thensigned= - integer= " $integer#? “fi# 如果就是一個符號-,則也是非法的if - z " $integer " ; thenecho “Invalid input, just a -" is not allowed&2 >#注意:>&2 三個字符緊連。return 1fi# 如果非純數字構成,則非法。if - n " $(echo $integer | sed' s/:digit:g' ) ” ; thenecho “Invalid integer, it includes some char but digit” >&2return 1fiinteger= " $signed$integer ”#范圍判斷,注意當 min和max為空時(即未傳范圍),我設定其為$integer,如此判斷就不會出錯。if $integer - It $
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 輸液給藥后的觀察與護理
- 航空航天復合材料 課件 第3章 輕金屬基復合材料
- 旅游景區停車場車位租賃及旅游合作協議
- 餐飲客戶家庭聚餐簽單服務合同
- 征收搬遷拆遷合同匯編寶典
- 采購人員廉潔自律與責任追究協議
- 教育機構分公司成立及人才培養合作合同
- 紙板品質管理培訓
- 成都房地產項目股權質押購房合同
- 離婚協議及子女撫養權、贍養費協議
- 青少年毒品預防教育課件
- 【華萊士品牌SWOT探析及營銷策略探究(含問卷)8700字(論文)】
- 鋼管混凝土柱計算
- 應急演練評估表模板
- 《抗凝藥物與麻醉》課件
- 垃圾滲濾液處理站運維及滲濾液處理投標方案(技術標)
- 生活垃圾焚燒系統設計
- 融資租賃實際利率計算表
- 亞馬遜知識產權侵權分析
- 變壓器施工方法
- 給攪拌站送石子合同范本
評論
0/150
提交評論