




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
編寫shell管理腳本:
shell的作用:
Shell是一個(gè)特殊的應(yīng)用程序,它介于操作系統(tǒng)內(nèi)核與用戶之間,負(fù)責(zé)接收用戶輸入的操作
指令并進(jìn)行解釋,將需要執(zhí)行的操作傳遞給內(nèi)核執(zhí)行。
Shell程序有很多種,windows里的cmd.exe也是shell的一種。
在linux/unix操作系統(tǒng)中,能夠使用的shell程序有很多種,常見(jiàn)的shell如下:
Bsh:早期的unixshell程序,實(shí)現(xiàn)了最基本的命令解釋其功能。
Csh:使用C語(yǔ)言的語(yǔ)法風(fēng)格,更加適合為用戶提供命令交互操作。
Ksh:結(jié)合了bsh和csh兩者的功能優(yōu)勢(shì)。
Bash;是bsh的升級(jí)替代品,目前大多數(shù)linux默認(rèn)的shell程序。
Zsh:更多的基于交互式操作系統(tǒng)考慮設(shè)計(jì)。
Shell環(huán)境的切換:
通過(guò)配置文件/etc/shells可以了解系統(tǒng)所支持的shell程序的路徑。
查看當(dāng)前l(fā)inux系統(tǒng)中能夠使用的shell程序的列表:
[root@localhost~]#cat/etc/shells
/bin/sh
/bin/bash
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
[root@localhost
有一部分shell程序?qū)嶋H上是其他shell程序的符號(hào)鏈接文件:
[root@test~]#Is-I/bin/*sh
-rwxr-xr-x.1rootroot938832Jul182013/bin/bash
Irwxrwxrwx.1rootroot4Jun2422:11/bin/csh->tcsh(tcsh是csh的兼容升級(jí)版本)
-rwxr-xr-x.1rootroot109672Oct172012/bin/dash
Irwxrwxrwx.1rootroot4Jun2422:05/bin/sh->bash
-rwxr-xr-x.1rootroot387328Feb222013/bin/tcsh
[root@test
1.臨時(shí)切換到新的shell環(huán)境:
直接輸入其他shell程序的名稱即可切換到新的shell環(huán)境,返回原來(lái)的shell可執(zhí)行exit
命令:
[root@testtcsh
[root@test~]#
查看當(dāng)前用戶所用的shell:
[root@enscript]#echo$SHELL
/bin/bash
[root@enscript]#
[root@test^]#echo$0(并不是所有shell都支持)
tcsh
[root@test~]#
[root@testexit
exit
[root@test~]#echo$0
-bash
[root@test~]#
2.更改用戶自己的登陸shell:
用戶登錄shell信息記錄在/etc/passwd文件中。用戶可以用chsh命令進(jìn)行修改:
[root@localhostgrep"root"/etc/passwd
root:x:Q:0:root:/root:/bin/bash
operators:11:0:operator:/root:/sbin/nologin
[root@localhost~]#
普通用戶更改自己的shell方法:
使用dwzhang用戶登錄,更改自己的shell為tcsh:
[dwzhang@test~]$echo$0
-bash
[dwzhang@test~]$chsh
Changingshellfordwzhang.
Password:
Newshell[/bin/bash]:/bin/tcsh
Shellchanged.
[dwzhang@test~]$echo$0
-bash
[dwzhang@test~]$grepdwzhang/etc/passwd
dwzhang:x:500:500::/home/dwzhang:/bin/tcsh
[dwzhang@test~]$
重新連接:
[dwzhang@test~]$echo$0
-tcsh
[dwzhang@test~]$
管理員root賬戶更改shell:
管理員直接vi編輯/etc/passwd,直接更改用戶shell.
用命令usermod進(jìn)行更改:
[root@localhost~]#usermod-s/bin/bashdwzhangl
bash問(wèn)題:
考試題:如何查看centoslinux系統(tǒng)默認(rèn)的shell?
[root@testecho$SHELL
/bin/bash
[root@test
查看shell版本:
[root@testbash-version
shell程序在運(yùn)維工作中的作用地位?
shell腳本很擅長(zhǎng)處理純文本類型的數(shù)據(jù),而linux中幾乎所有的配置文件,日志文件都是純
文本類型的文件。貼近系統(tǒng)層的操作,shell是最佳。
shell腳本語(yǔ)言的種類:
在unix和linux中主要有兩大類shell:
bourneshell(包括sh,ksh,bash)
cshell(包括csh,tcsh)
bash是最常用的,也是linux默認(rèn)的shell解釋器。
常用的開(kāi)發(fā)腳本語(yǔ)言:
php:網(wǎng)頁(yè)程序,主要用來(lái)做web程序。
perl:強(qiáng)大,語(yǔ)法復(fù)雜。
python:新興的語(yǔ)言,語(yǔ)法簡(jiǎn)潔。
sh和bash的區(qū)別:
sh是bash的軟鏈接:
[root@testIs-I/bin/sh
Irwxrwxrwx.1rootroot4Jun2422:05/bin/sh->bash
[root@test
Bash的常用功能:
1.命令歷史
(1)使用歷史命令
可用方向鍵上來(lái)使用執(zhí)行過(guò)的命令。
⑵查看或修改歷史命令列表
命令history默認(rèn)情況下可以為用戶保存最多1000條歷史命令,若要更改需修改/etc/profile
文件中的“HISTSIZE=1000”實(shí)現(xiàn)。
[root@localhostvi/etc/profile
HISTSIZE=1000
[root@localhost
為特定用戶調(diào)整歷史用戶命令:
[dwzhang@test~]$vi.bash_profile
exportHISTSIZE=20(添加這一行)
[dwzhang@test~]$history|wc-I
76
重新登錄:
[dwzhang@test~]$history|wc-I
20
[dwzhang@test~]$
清除歷史命令:
[root@localhost~]#history-c
2.命令別名:
查看系統(tǒng)已設(shè)置的別名:
[root@localhost~]#alias
aliascp='cp-i'
aliasl.='ls-d.*-color=auto'
aliasll='ls-I-color=auto'
aliasls='ls-color=auto'
aliasmv='mv-i'
aliasrm='rm-i'
aliaswhich='alias|/usr/bin/which-tty-only-read-alias-show-dot-show-tilde'
[root@localhost^]#
設(shè)置別名命令:(重啟后失效)(長(zhǎng)期更改應(yīng)更改文件.bashrc)
基本形式:alias別名實(shí)際命令’
取消設(shè)置別名:
命令unalias
Unalias別名名稱
[root@localhostunaliasrm
取消當(dāng)前系統(tǒng)所有設(shè)置的命令別名:
[root@localhostunalias-a
標(biāo)準(zhǔn)輸出重定向:
是將命令輸出結(jié)果定向(保存)到指定的文件中,而不是直接顯示在顯示器的屏幕上。
輸出重定向使用符號(hào):
符號(hào)>:如果指定的文件不存在,則會(huì)建立新文件,結(jié)果保存到該文件中。
如果該文件存在,則清空文件內(nèi)容并保存結(jié)果到該文件。
[root@localhostidzhangl>idzhangl.txt
[root@localhostIs
anaconda-ks.cfgidzhangl.txtinstall.loginstall.log.syslog公共的模板視頻圖片
文檔下載音樂(lè)桌面
[root@localhostcatidzhangl.txt
uid=500(zhangl)gid=500(zhangl)組=500(zhangl)
[root@localhost~]#
符號(hào)”:可以將結(jié)果追加到指定文件末尾進(jìn)行保存,而不覆蓋文件的原有內(nèi)容。如果想把多
個(gè)命令輸出結(jié)果保存在一個(gè)文件中,可以使用此命令。
[root@localhostidzhang2?idzhangl.txt
[root@localhostcatidzhangl.txt
uid=500(zhangl)gid=500(zhangl)組=500(zhangl)
uid=501(zhang2)gid=501(zhang2)組=501(zhang2)
[root@localhost~]#
標(biāo)準(zhǔn)輸入重定向:
是將命令中接收輸入的途徑由默認(rèn)的鍵盤更改為指定的文件。
使用輸入重定向?qū)⑹挂恍┙换ナ讲僮鬟^(guò)程可以通過(guò)讀取文件來(lái)完成。
比如為用戶設(shè)置密碼的過(guò)程需要交互,比如安裝vmwaretools等。
為用戶設(shè)置密碼,結(jié)合-stdin命令和〈重定向符,則可自動(dòng)讀取文件設(shè)置密碼。省略啦交互
的過(guò)程。
[root@localhostvipw.txt
[root@localhostcatpw.txt
lqaz2wsx!@
[root@localhostpasswd-stdinzhang3<pw.txt
passwd:未知的用戶名稱'zhang3'o
[root@localhostuseraddzhang3
[root@localhostpasswd-stdinzhang3<pw.txt
標(biāo)準(zhǔn)錯(cuò)誤重定向:
就是將執(zhí)行命令過(guò)程中出現(xiàn)的錯(cuò)誤信息(如選項(xiàng)參數(shù)錯(cuò)誤等)重新定向保存到指定文件,而
不是直接顯示在屏幕上。
使用操作符2>o其中2是錯(cuò)誤文件的編號(hào)。2>>:不覆蓋舊的文件。
[root@localhost~]#helpIs
bash:help:nohelptopicsmatch'Is'.Try'helphelp'or'man-kIs1or'infoIs'.
[root@localhosthelpIs2>err.txt
[root@localhost~]#caterr.txt
bash:help:nohelptopicsmatch'Is'.Try'helphelp'or'man-kIs'or'infoIs'.
[root@localhost~]#
在實(shí)際應(yīng)用中,錯(cuò)誤重定向主要是提供以下用途:
1.在調(diào)試程序時(shí),收集錯(cuò)誤信息。
2.使用shell腳本程序時(shí),將錯(cuò)誤重定向到指定文件中。
當(dāng)命令執(zhí)行結(jié)果中同時(shí)包含標(biāo)準(zhǔn)輸出(正常執(zhí)行)和錯(cuò)誤輸出的內(nèi)容時(shí),可以同時(shí)用〉,2>
將信息分別重定向到不同的文件。也可以用&>操作符將兩種輸出內(nèi)容重定向到同一個(gè)文件
中。
管道操作:
在bash環(huán)境中,管道操作作為不同命令之間的協(xié)同工作提供了一種機(jī)制。位于管道“|”左
側(cè)的命令輸出結(jié)果,將作為右側(cè)命令的輸入,同一行命令中可以依次使用多個(gè)管道。
輸入/輸出重定向、管道
程序的默認(rèn)輸入設(shè)備,叫標(biāo)準(zhǔn)輸入,stdin,鍵盤01
程序的默認(rèn)輸出設(shè)備,叫標(biāo)準(zhǔn)輸出,stdout,minitor顯示器。2
程序的默認(rèn)錯(cuò)誤信息輸出設(shè)備,標(biāo)準(zhǔn)錯(cuò)誤輸出,stderr,minitor。3
輸出重定向:
>,大于號(hào)表示。
COMMAND>FILE,覆蓋輸出,沖掉原來(lái)的內(nèi)容。
[root@localhostIs/>/tmp/test.out
[root@localhostIs/tmp/test.out
/tmp/test.out
[root@localhost~]#
[root@localhostpwd>aa
[root@localhostcataa
/root
[root@localhost
可以用命令關(guān)掉輸出重定向這個(gè)功能:
命令:set-C(關(guān)閉輸出重定向。set+C開(kāi)啟,>|強(qiáng)行覆蓋,-C無(wú)效,大C)
[root@localhostset-C
[root@localhostset+C
[root@localhost^]#ls/>|aa(強(qiáng)行覆蓋)
COMMAND?FILE,追加輸出。
>>,兩個(gè)大于號(hào)。
[root@localhostcataa
/root
[root@localhost~]#Is/?aa
[root@localhostcataa
/root
bin
boot
dev..............................
[root@localhost
/dev/null的意義
數(shù)據(jù)黑洞,送進(jìn)去的數(shù)據(jù)丟棄,把不想要的輸出信息丟棄到/dev/null中。這里單個(gè)大于號(hào)
或追加輸出都無(wú)所謂了。
[root@localhostdate
FriSep1211:12:01CST2014
[root@localhost~]#date>/dev/null《丟棄輸出內(nèi)容,只想看命令是否成功)
[root@localhost^]#echo$?(查看輸入是否成功)
0
[root@localhost
輸入重定向:
<,小于號(hào)。
COMMAND<FILE
是將命令中接收輸入的途徑由默認(rèn)的鍵盤更改為指定的文件。
使用輸入重定向?qū)⑹挂恍┙换ナ讲僮鬟^(guò)程可以通過(guò)讀取文件來(lái)完成。
比如為用戶設(shè)置密碼的過(guò)程需要交互,比如安裝vmwaretools等。
為用戶設(shè)置密碼,結(jié)合-stdin命令和〈重定向符,則可自動(dòng)讀取文件設(shè)置密碼。省略啦交互
的過(guò)程。
[root@localhost~]#vipw.txt
[root@localhost~]#catpw.txt
lqaz2wsx!@
[root@localhostpasswd-stdinzhang3<pw.txt
passwd:未知的用戶名稱'zhang3'c
[root@localhostuseraddzhang3
[root@localhostpasswd-stdinzhang3<pw.txt
??兩個(gè)小于號(hào):
COMMAND?,文件結(jié)尾標(biāo)示符,(出現(xiàn)此標(biāo)示即結(jié)束)
例子:把hellozhang
helloda
hellowei一次寫入文件中。
方法1:一行一行追加
[root@localhost~]#echo"hellozhang',>testl
[root@localhost~]#echo"helloda"?testl
[root@localhost~]#echo"hellowei"?testl
[root@localhost~]#cattestl
hellozhang
helloda
hellowei
[root@localhost^]#
方法2:利用?e和\n下一行功能
[root@localhostecho-e"hellozhang\nhelloda\nhellowei">test2
[root@localhost~]#cattest2
hellozhang
helloda
hellowei
[root@localhost~]#
方法3:用<<兩個(gè)小于號(hào)
[root@localhost~]#cat?test3?eof(輸入eof結(jié)束)
>hellozhang
>helloda
>hellowei
>eof(遇到eof結(jié)束)
[root@localhostcattest3
hellozhang
helloda
hellowei
[root@localhost~]#
<<用在腳本中:
[root@localhost~]#vimtest4.sh
#!/bin/bash
cat?eof
whatdoyouwanttoeat?
l.shaoji
2.longxia
3.dazhaxie
eof
[root@localhostbashtest4.sh
whatdoyouwanttoeat?
l.shaoji
2.longxia
3.dazhaxie
[root@localhost
錯(cuò)誤輸出:
就算重定向一個(gè)命令,如果命令是錯(cuò)誤的,也是沒(méi)有重定向。
例子:
[root@localhostIls/etc>testl
-bash:Ils:commandnotfound
[root@localhost^]#
2>:
把錯(cuò)誤信息追加到文件:
[root@localhostIls/etc2>testl
[root@localhostcattestl
-bash:Ils:commandnotfound
[root@localhost~]#
正確或錯(cuò)誤都重定向:
COMMAND>FILE2>&1
COMMAND>FILE12>FILE2(把對(duì)的輸出到FILE1文件中,錯(cuò)誤輸入到FILE2中)
COMMAND&>FILE(無(wú)論對(duì)錯(cuò)都輸出到文件中)
管道:
把第一個(gè)命令結(jié)果送給第二個(gè)命令。
COMMAND1|COMMAND2|......................
[root@localhostecho"welcomezhangdawei"
welcomezhangdawei
[root@localhost^]#echo"welcomezhangdawei"|tr'a-z''A-Z'(用大寫字母顯示)
WELCOMEZHANGDAWEI
[root@localhost~]#echo"welcomezhangdawei"|cut-d''-f2(只顯示第二個(gè)字符)
zhangdawei
[root@localhost~]#echo"welcomezhangdawei"|cut-d''-fl
welcome
[root@localhostREC='echo"welcomezhangdawei"|cut-d''-fl'
[root@localhost~]#echo$REC
welcome
[root@localhost~]#
顯示/etc下文件大寫顯示:
[root@localhostIs/etc|tr'a-z''A-Z*|less
[root@localhostlog]#pwd
/var/log
[root@localhostlog]#
[root@localhostlog]#file'Is/var/log'
anaconda.ifcfg.log:ASCIItext
anaconda.log:ASCIIEnglishtext
[root@localhostlog]#file'Is/var/log'|tr-d'1(tr-d',刪除空格字符)
anaconda.ifcfg.log:ASCIItext
anaconda.log:ASCIIEnglishtext
[root@localhostlog]#file'Is/var/log'|sort(排序)
anaconda.ifcfg.log:ASCIItext
anaconda.log:ASCIIEnglishtext
[root@localhostlog]#file'Is/var/log'|cut-d:-f2(顯示第二個(gè)字符)
ASCIItext
ASCIIEnglishtext
[root@localhostlog]#file'Is/var/log'|cut-d:-f2|tr-d11|sort-u(sort-u去掉重復(fù)的選項(xiàng))
ASCIIC++programtext,withverylonglines
ASCIIEnglishtext
想顯示命令并且保存一份命令結(jié)果:
tee命令
COMMAND|teefile|COMMAND
[root@localhostlog]#Is/etc|teetest51查看/etc并把結(jié)果保存到test5文件中)
Shell變量應(yīng)用:
用于保存系統(tǒng)和用戶需要特定參數(shù),而且這些參數(shù)可以根據(jù)用戶的設(shè)定或系統(tǒng)環(huán)境的變化而
相應(yīng)變化。
常見(jiàn)的shell變量類型:用戶自定義變量(本地變量),環(huán)境變量(全局變量),預(yù)定義變量,
位置變量。
用戶自定義變量:
是由系統(tǒng)用戶自己定義的變量,只在用戶自己的shell環(huán)境中有效,又稱為本地變量。
1.定義新的變量
格式:變量名=變量值
新建一個(gè)名為“DAY”的變量,初始內(nèi)容設(shè)置為"Sunday"
[root@localhost~]#DAY=Sunday
[root@localhost~]#
2.查看和引用變量的值
通過(guò)在變量名前加“$”,可以引用一個(gè)變量的內(nèi)容。需要在終端中輸出變量?jī)?nèi)容,可以
使用echo命令。
查看變量DAY的內(nèi)容,比較使用$和不使用的區(qū)別:
[root@localhost~]#DAY=Sunday
[root@localhost~]#echoDAY(錯(cuò)誤用法,直接顯示輸入字符)
DAY
[root@localhost~]#echo$DAY(弓I用DAY變量的內(nèi)容)
Sunday
[root@localhost
當(dāng)變量名稱和緊跟著其后的其他字符相渾濁時(shí),需要加{}大括號(hào),將變量名包圍起來(lái)。
[root@localhost~]#DAY=Sunday
[root@localhost~]#echo$DAYmoring(錯(cuò)誤用法,顯示空行)
[root@localhostecho${DAY}moring(正確引用DAY變量的內(nèi)容)
Sundaymoring
[root@localhost~]#
[root@testjintian=wensday
[root@test~]#echo$jintian
wensday
[root@testechojintianshi${jintian}(注意$要放在中括號(hào)外面${jintian})
jintianshiwensday
[root@test~]#
這種變量的方式是直接定義變量?jī)?nèi)容,內(nèi)容一般為簡(jiǎn)單連續(xù)的數(shù)字,字符串,路徑名等。
3.為變量賦值的常用方法:
上面說(shuō)的在=號(hào)后面直接指定變量?jī)?nèi)容是為變量賦值的基本方法,除此之外,比較常用
的幾種變量賦值操作包括:雙引號(hào),單引號(hào),反撇號(hào),read命令。
雙引號(hào)(”〃)
使用雙引號(hào)時(shí),可以再雙引號(hào)的范圍內(nèi)使用$符號(hào)來(lái)引用其他變量的值。
確認(rèn)變量DAY的內(nèi)容,并使用雙引號(hào)為TODAY變量值"todayis$DAY":
[root@localhostecho$DAY
Sunday
[root@localhosttoday="todayis$DAY"
[root@localhost~]#echo$today
todayisSunday
[root@localhost~]#
這種變量的方式是通過(guò)雙引號(hào)定義變量,特點(diǎn)是輸出變量時(shí)引號(hào)里的變量會(huì)經(jīng)過(guò)解析后輸
出的變量?jī)?nèi)容,不是把引號(hào)內(nèi)容輸出,適合于字符串中附帶有變量的內(nèi)容。
單引號(hào)(“)
使用單引號(hào)時(shí),將不可以在單引號(hào)范圍內(nèi)引用其他變量的值,$將會(huì)被當(dāng)成普通字符。
確認(rèn)變量的內(nèi)容DAY,并使用單引號(hào)為today變量賦值弋。dayis$DAY"
[root@localhost~]#echo$DAY
Sunday
[root@localhosttoday='todayis$DAY'
[root@localhost~]#echo$today
todayis$DAY
[root@localhost^]#
這種變量的方式是通過(guò)單引號(hào)定義變量,特點(diǎn)是單引號(hào)里面是什么就輸出什么,比較適合
定義顯示純字符串。
例子:
[root@test3=
[root@testb='192.168?l.2'
[root@testc=,,"
[root@testecho$a
[root@test~]#echo$b
[root@test~]#echo$c
[root@test~]#
[root@testa=-$a
[root@testb='-$a'
[root@testc=H-$a"
[root@test**]#echo"a=$a"
3=-
[root@test~]#echo,,b=$b"
b=-$a
[root@test~]#echo"c=${c}"
c=--
[root@test~]#
對(duì)于不連續(xù)的字符串定義要用雙引號(hào),否則系統(tǒng)提示沒(méi)有這個(gè)命令:
[root@testa="bcd"
[root@testecho$a
bed
[root@test~]#d=fdg
-bash:d:commandnotfound
[root@test
反撇號(hào)(,、)
使用反撇號(hào)時(shí),可以將執(zhí)行的特定命令的輸出結(jié)果賦給變量,反撇號(hào)內(nèi)包含的字串必須是能
夠執(zhí)行的命令,執(zhí)行后會(huì)用輸出結(jié)果替換該命令字串。
用命令I(lǐng)I查看,將結(jié)果保存到變量aa中:
[root@localhost~]#aa='ll'(給aa一個(gè)可以執(zhí)行命令的變量II查看命令)
[root@localhost~]#echo$aa(查看結(jié)果)
總用量112-rw-------.1rootroot13544月922:48anaconda-ks.cfg-rw-r-r—.1rootroot854
月2309:18err.txt-rw-r-r-.1rootroot964月2210:55idzhangl.txt-rw-r-r-.1rootroot
450644月922:48install.log-rw-r-r-.1rootroot100334月922:46install.log.syslog-rw-r-r-.
1rootroot114月2211:05pw.txtdrwxr-xr-x.2rootroot40964月914:50公共的drwxr-xr-x.
2rootroot40964月914:50模板drwxr-xr-x.2rootroot40964月914:50視頻drwxr-xr-x.
2rootroot40964月914:50圖片drwxr-xr-x.2rootroot40964月914:50文檔drwxr-xr-x.
2rootroot40964月914:50下載drwxr-xr-x.2rootroot40964月914:50音樂(lè)drwxr-xr-x.
2rootroot40964月914:50桌面
[root@localhost~]#
在需要嵌套使用命令替換操作時(shí),反撇號(hào)將力所不能,這時(shí)需使用“$()"來(lái)代替:
[root@localhost~]#bb=$(ll$(mkdirvvb))(給bb變量,創(chuàng)建文件夾vvb,查看II)
[root@localhost~]#echo$bb
總用量124-rw-r-r-.1rootroot7354月2311:11aa.txtdrwxr-xr-x.2rootroot40964月23
11:17abc-rw-------.1rootroot13544月922:48anaconda-ks.cfg-rw-r-r-.1rootroot854月
2309:18err.txt-rw-r-r-.1rootroot964月2210:55idzhangl.txt-rw-r-r-.1rootroot450644
月922:48install.log-rw-r-r-.1rootroot100334月922:46install.log.syslog-rw-r-r-.1root
root114月2211:05pw.txtdrwxr-xr-x.2rootroot40964月2311:18vvbdrwxr-xr-x.2root
root40964月914:50公共的drwxr-xr-x.2rootroot40964月914:50模板drwxr-xr-x.2
rootroot40964月914:50視頻drwxr-xr-x.2rootroot40964月914:50圖片drwxr-xr-x.2
rootroot40964月914:50文檔drwxr-xr-x.2rootroot40964月914:50下載drwxr-xr-x.2
rootroot40964月914:50音樂(lè)drwxr-xr-x.2rootroot40964月914:50桌面
[root@localhost
命令read是bash內(nèi)置命令來(lái)給變量賦值
[root@localhost^]#readzhang(賦值給變量zhang)
zhangdawei(輸入內(nèi)容)
[root@localhostecho$zhang(查看變量zhang)
zhangdawei
[root@localhost
4.設(shè)置變量的作用范圍:
對(duì)于用戶自行定義的變量,默認(rèn)只能在當(dāng)前的shell環(huán)境中使用,因此稱為局部變量。
為了能在所有子shell環(huán)境中能夠繼續(xù)使用,可以使用export命令將指定的變量設(shè)置為“全
局變量”??梢酝瑫r(shí)使用多個(gè)變量名,不需要$符號(hào),多個(gè)變量用空格分開(kāi)。
[root@localhost~]#filesvr=
[root@localhostecho$filesvr
[root@localhost~]#zsh
[root@localhost~]#echo$filesvr
[root@localhost~]#exit
[root@localhostexportfilesvr
[root@localhostzsh
[root@localhostecho$filesvr
[root@localhost~]#
定義兩個(gè)變量MONTH,YEAR,并將其設(shè)置成全局變量。
[root@localhost~]#exportM0NTH=mayYEAR=2009
[root@localhostecho$MONTH$YEAR
may2009
[root@localhost
例子說(shuō)明:
[root@test~]#zdw=zhangdawei(定義變量zdw)
[root@test~]#echo$zdw(echo查看變量)
zhangdawei
[root@testcsh(切換到csh)
[root@testecho$zdw(查看zdw變量)
zdw:Undefinedvariable.(顯示未定義的變量)
[root@testecho$0(查看當(dāng)前shell)
csh
[root@testexit(退出)
exit
[root@testexportzdw(用命令export指定變量zdw為全局變量)
[root@testcsh(切換到csh)
[root@testecho$zdw(查看zdw變量?jī)?nèi)容)
zhangdawei
[root@test
5.清除自定義變量:
當(dāng)用戶不再需要使用自定義變量時(shí),可以使用unset命令對(duì)已定義的用戶變量進(jìn)行清除,
指定一個(gè)或多個(gè)變量名稱作為參數(shù)即可。(以空格分開(kāi))
[root@localhost~]#exportM0NTH=mayYEAR=2009
[root@localhost~]#echo$M0NTH$YEAR
may2009
[root@localhostunsetMONTHYEAR(注意:刪除變量不用加$)
[root@localhost~]#echo$MONTH$YEAR
[root@localhost~]#
6.數(shù)值變量的運(yùn)算:
Bash程序并不適合進(jìn)行強(qiáng)大的數(shù)學(xué)運(yùn)算(如小數(shù),指數(shù)等),一般只適合進(jìn)行簡(jiǎn)單地整
數(shù)運(yùn)算.可以使用expr表達(dá)式命令:
格式如下:expr變量1運(yùn)算符變量2【運(yùn)算符變量3......]
其中變量1,變量2.......對(duì)應(yīng)需計(jì)算的數(shù)值變量(前面需要加$符號(hào)引用),常用的幾種運(yùn)
算符:
+:加法運(yùn)算
-:減法運(yùn)算
\*:乘法運(yùn)算
/:除法運(yùn)算
%:求模運(yùn)算,又稱為取余運(yùn)算,即計(jì)算數(shù)值相除后的余數(shù)。
第一種方法:用let:
[root@enscript]#a=2
[root@enscript]#b=6
[root@enscript]#c=$a+$b
[root@enscript]#echo$c
2+6
[root@enscript]#letc=$a+$b
[root@enscript]#echo$c
8
[root@enscript]#
第二種方法:用$[算數(shù)表達(dá)式]
[root@enscript]#a=5
[root@enscript]#b=5
[root@enscript]#w=$[$a+$b]
[root@enscript]#echo$w
10
[root@enscript]#
第三種方法:用$((算數(shù)表達(dá)式)),2個(gè)小括號(hào):
[root@enscript]#n=8
[root@enscript]#m=6
[root@enscript]#p=$(($n+$m))
[root@enscript]#echo$p
14
[root@enscript]#
第四種方法:用expr算術(shù)表達(dá)式,注意數(shù)字之間要有空格,要用''引號(hào):
[root@enscript]#f=7
[root@enscript]#s=9
[root@enscript]#x='expr$f+$s'(注意:'expr空格$f空格+空格$s')
[root@enscript]#echo$x
16
[root@enscript]#
環(huán)境變量:
這里所說(shuō)的環(huán)境變量是指用戶登陸后linux系統(tǒng)預(yù)先設(shè)定好的一類shell變量,其功能是設(shè)
置用戶的shell工作環(huán)境,包括用戶宿主目錄,命令查找路徑,用戶當(dāng)前目錄,登陸終端等。
通常使用大寫字母,數(shù)字和其他字符組成。一般由linux系統(tǒng)自行維護(hù)。
1.查看環(huán)境變量
通常不帶任何選項(xiàng)或參數(shù)的set命令,可以查看系統(tǒng)中的所有的shell變量。
[root@localhost~]#set|less
BASH=/bin/bash
BASHOPTS=checkwinsize:cmdhist:expand_aliases:extquote:force_fignore:host
complete:interactive_comments:progcomp:promptvars:sourcepath
BASH_ALIASES=()
BASH_ARGC=()
BASH_ARGV=()
BASH_CMDS=()
BASH_LINENO=()
BASH_SOURCE=()
比較常用的環(huán)境變量:
$USER,$LOGNAME變量表示當(dāng)前用戶登陸的名稱,$UID變量表示當(dāng)前用戶的UID號(hào),
$SHELL變量表示用戶使用的登陸shell,$HOME變量表示用戶的宿主目錄,$PWD變量表示
用戶當(dāng)前的工作目錄等。
$PATH變量表示當(dāng)前用戶的命令搜索路徑。
以分號(hào)分割,顯示當(dāng)前用戶的用戶名,宿主目錄,登陸shell。
[root@localhost~]#echo"$USER:$HOME:$SHELL"
root:/root:/bin/bash
[root@localhost
查看當(dāng)前的命令搜索路徑,并將“/opt/bin”目錄添加到現(xiàn)有的搜索路徑中去:
[dwzhang@test~]$echo$PATH
/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/home/dwz
hang/bin
[dwzhang@test~]$PATH=7opt/bin:$PATH"
[dwzhang@test~]$echo$PATH
/opt/bin:/usr/lib64/qt-3.3/bin:/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/h
ome/dwzhang/bin
[dwzhang@test~]$
2.環(huán)境變量配置文件
/etc/profile:全局配置文件,對(duì)所有用戶起作用。
.bash_profile:用戶配置文件,可以覆蓋全局配置。
用戶需要長(zhǎng)期變更所使用的某個(gè)環(huán)境變量,可以再.bash_profile中修改。
在當(dāng)前用戶環(huán)境中,將用于限制歷史命令查看數(shù)量的環(huán)境變量HISTSIZE的值改為900。
[root@localhost~]#echo$HISTSIZE(查看環(huán)境變量)
1000
[root@localhostexportHISTSIZE=900(設(shè)置全局變量改為900)
[root@localhostecho$HISTSIZE(查看變量)
900
[root@localhost
位置變量:
$n:獲取當(dāng)前執(zhí)行的shell腳本的第n個(gè)參數(shù)值,n=1..9,當(dāng)n為0時(shí)表示腳本的文件
名,如果n大于9,用大括號(hào)括起來(lái)${10}
例子:
[root@testdayl]#catn.sh
echo$1$2$3
[root@testdayl]#shn.shxiaolxiao2xiao3
xiaolxiao2xiao3(分別對(duì)應(yīng)$1,$2,$3)
[root@testdayl]#
[root@testdayl]#catn.sh
echo$1$2$3${10}
[root@testdayl]#shn.sh1234567891011
12310
[root@testdayl]#
預(yù)定義變量:(特殊變量)
是由bash程序預(yù)先定義好的一些特殊變量,用戶只能使用預(yù)定義變量,而不能創(chuàng)建新的預(yù)
定義變量。所有的預(yù)定義變量都是由$符號(hào)和另一個(gè)符號(hào)組成的,較常用的有:
$0:獲取當(dāng)前執(zhí)行的shell腳本的文件名,包括路徑。(表示當(dāng)前執(zhí)行的進(jìn)程的進(jìn)程名)
例子:
[root@testdayl]#catO.sh
echo$0
[root@testdayl]#shO.sh(顯示腳本的名稱)
0.sh
[root@testdayl]#sh/scripts/dayl/O.sh
/scripts/dayl/O.sh(顯示腳本名和路徑)
[root@testdayl]#
[root@testdayl]#cat/etc/init.d/postfix(查看postfix腳本文件)
echo$"Usage:$0{start|stop|restart|reload|abort|flush|check|status|condrestart}"
[root@testdayl]#/etc/init.d/postfixxiaozhang(執(zhí)行一下)
Usage:/etc/init.d/postfix{start|stop|restart|reload|abort|flush|check|status|condrestart}
[root@testdayl]#(提示文件名和路徑)
如果腳本需要使用腳本名,直接定義$0,不需要在定義參數(shù)。
有的時(shí)候我們不需要路徑和腳本名同時(shí)顯示:需要用命令dirname和basename:
[root@testdayl]#dirname/scripts/dayl/O.sh(路徑)
/scripts/dayl
[root@testdayl]#basename/scripts/dayl/O.sh(腳本名)
O.sh
[root@testdayl]#
[root@testdayl]#cat00.sh
dirname"$0"
basename"$0"
[root@testdayl]#sh00.sh(路徑)
OO.sh
[root@testdayl]#catOO.sh
dirname"$0"
basename"$0"
[root@testdayl]#sh/scripts/dayl/OO.sh(sh路徑)
/scripts/dayl
OO.sh
[root@testdayl]#
$*:獲取當(dāng)前shell的所有參數(shù),將所有的命令行參數(shù)視為單個(gè)字符串,相當(dāng)于〃$1$2$3〃....
注意與$#區(qū)別。(表示所有位置參數(shù)的內(nèi)容。)
$#:獲取當(dāng)前shell命令行中參數(shù)的總個(gè)數(shù)。
[root@testdayl]#catn.sh
echo$1$2$3${10}
echo$#
[root@testdayl]#shn.sh123
123
3(顯示命令行總個(gè)數(shù))
[root@testdayl]#shn.sh12345
123
5
[root@testdayl]#
[root@testdayl]#catbijiao.sh
if[$#-ne3];then(命令行輸入3個(gè))
echo"err,plsinput3argv."(否則顯示錯(cuò)誤)
exit1
else
echo"ok"
fi
[root@testdayl]#shbijiao.sh
err,plsinput3argv.
[root@testdayl]#shbijiao.shaa
err,plsinput3argv.
[root@testdayl]#shbijiao.shaabb
err,plsinput3argv.
[root@testdayl]#shbijiao.shaabbcc
ok
[root@testdayl]#shbijiao.shaabbccdd
err,plsinput3argv.
[root@testdayl]#
$@:這個(gè)程序的所有參數(shù)“$1”“$2”“$3”.…,這是將參數(shù)傳遞給其他程序的最佳方
式,因?yàn)樗麜?huì)保留所有內(nèi)嵌在每個(gè)參數(shù)里的任何空白。
注意$*和$@的區(qū)別:
進(jìn)程狀態(tài)變量
$$:獲取當(dāng)前shell的進(jìn)程號(hào)(PID)。
$!:執(zhí)行上一個(gè)指令的PID,上一個(gè)后臺(tái)運(yùn)行進(jìn)程的進(jìn)程號(hào)。
$?:獲取執(zhí)行上一個(gè)指令的返回值(0為成功,非0為失?。?/p>
例子:
[root@testdayl]#oldboy
-bash:oldboy:commandnotfound
[root@testdayl]#echo$?
127(非0,上一條命令執(zhí)行失敗)
[root@testdayl]#pwd
/scripts/dayl
[root@testdayl]#echo$?
0
[root@testdayl]#
返回值:
0:表示運(yùn)行成功。
2:權(quán)限拒絕。
1~125:表示運(yùn)行失敗,執(zhí)行錯(cuò)誤。
126:未找到執(zhí)行的命令。
>128:命令被系統(tǒng)強(qiáng)制結(jié)束。
$_:在此之前執(zhí)行的命令(上一個(gè)命令)或腳本的最后一個(gè)參數(shù)。
Shell腳本的概念
凡是使用shell編程語(yǔ)言腳本編寫的程序文件都可以稱為shell腳本。
只要將linux命令按順序保存到一個(gè)文本文件中,并給予這個(gè)文件可執(zhí)行權(quán)限,那么這個(gè)文
件就可以稱為shell腳本。Shell腳本是屬于解釋執(zhí)行的,并不需要進(jìn)行特別編譯,只需要有
相應(yīng)的shell命令解釋器即可。
查看系統(tǒng)腳本文件的數(shù)量和文件類型:
[root@localhost~]#Is-I/etc/rc.d/init.d/*|wc-I
67
[root@localhost~]#file/etc/rc.d/init.d/*|tail-2
/etc/rc.d/init.d/wpa_supplicant:Bourne-Againshellscripttextexecutable
/etc/rc.d/init.d/ypbind:POSIXshellscripttextexecutable
[root@localhost
Linux中的系統(tǒng)腳本文件屬主都是管理員用戶root,所有的腳本文件都具有可執(zhí)行(x)屬性,
因此可以由shell解釋執(zhí)行。Shell腳本文件以文本文件的形式保存,可以使用cat命令查看
文件內(nèi)容,也可以使用vi編輯器修改文件的內(nèi)容。
查看系統(tǒng)中的網(wǎng)絡(luò)服務(wù)腳本network文件的開(kāi)頭五行內(nèi)容:
[root@localhost"]#cat/etc/rc.d/init.d/network|head-5
#!/bin/bash
#
#networkBringup/downnetworking
#
#chkconfig:23451090
[root@localhost
Linux中的系統(tǒng)腳本文件只有管理員root才具有修改的權(quán)限。
編寫一個(gè)完整可運(yùn)行的Shell腳本需要經(jīng)過(guò)以下步驟:
1.建立包含可執(zhí)行語(yǔ)句的文本文件
使用vi創(chuàng)建腳本文件,可以有擴(kuò)展名,也可以沒(méi)有。
腳本中包括的內(nèi)容如下:
運(yùn)行環(huán)境設(shè)置:通常位于文件的第一行,用于指定使用哪一個(gè)shell程序解釋。
設(shè)置以“#!”開(kāi)始,后面緊跟指定的完整路徑,例如#!/bin/bash。
注釋行:以#符號(hào)開(kāi)頭的內(nèi)容都被視為注釋行。
可執(zhí)行語(yǔ)句:是腳本最重要的組成部分。在命令行中可執(zhí)行的命令都可以寫入腳本中,
當(dāng)程序運(yùn)行時(shí),默認(rèn)將會(huì)按照順序依次解釋執(zhí)行。還可以添加一些程序結(jié)構(gòu)語(yǔ)句。
以上部分只有可執(zhí)行語(yǔ)句是必不可少的。
例子:
使用vi編輯一個(gè)用于查看當(dāng)前系統(tǒng)中/boot目錄所占空間的大小,并列出內(nèi)核文件的屬性信
息的腳本文件repboot.sho
[root@localhostvirepboot.sh
[root@localhostcatrepboot.sh
#!/bin/bash(指定shell路徑)
#/bootandkernel(注釋)
echo"Useageof/boot:"(顯示提示信息)
du-sh/boot(查看目錄空間)
echo"themodeofkernelfile:"(顯示提示信息)
Is-Ih/boot/vmlinuz-*(查看文件屬性)
[root@localhost
2.為腳本添加可執(zhí)行權(quán)限
編好腳本后,需要執(zhí)行程序才能看到結(jié)果。但是新創(chuàng)建的腳本不具有可執(zhí)行屬性,需要
用命令chmod為文件添加x權(quán)限:
[root@localhost~]#Is-Irepboot.sh(查看)
-rw-r-r-.1rootroot1234月2510:50repboot.sh(無(wú)x權(quán)限)
[root@localhost
[root@localhostchmoda+xrepboot.sh(力口x權(quán)限)
[root@localhost~]#Is-Irepboot.sh(查看)
-rwxr-xr-x.1rootroot1234月2510:50repboot.sh(有啦x權(quán)限)
[root@localhost
執(zhí)行shell腳本:有多種方式執(zhí)行shell腳本:
1.直接執(zhí)行帶x權(quán)限的腳本文件
最常用的一種方式。直接通過(guò)腳本文件路徑執(zhí)行
[root@localhost~]#./repboot.sh(?/執(zhí)行)
Useageof/boot:
27M/boot
themodeofkernelfile:
-rwxr-xr-x.1rootroot3.9M2月222013/boot/vmlinuz-2.6.32-358.el6.x86_64
[root@localhost~]#
2.使用shell解釋器程序執(zhí)行腳本
由解釋器程序負(fù)責(zé)讀取腳本文件中的內(nèi)容并執(zhí)行,不需要x權(quán)限,通常在腳本調(diào)試中使
用。(bash或sh執(zhí)行,兩個(gè)意思一樣。)
[root@localhost~]#bashrepboot.sh(bash執(zhí)行)
Useageof/boot:
27M/boot
themodeofkernelfile:
-rwxr-xr-x.1rootroot3.9M2月222013/boot/vmlinuz-2.6.32-358.el6.x86_64
[root@localhost
3.使用.命令執(zhí)行
上面都是在當(dāng)前shell中啟動(dòng)一個(gè)子shell來(lái)運(yùn)行腳本程序。需要在當(dāng)前shell環(huán)境中運(yùn)行
用bash的內(nèi)部命令.或source命令。也是不需要x權(quán)限。
[root@localhost~]#.repboot.sh(,后有空格)
Useageof/boot:
27M/boot
themodeofkernelfile:
-rwxr-xr-x.1rootroot3.9M2月222013/boot/vmlinuz-2.6.32-358.el6.x86_64
[root@localhost~]#
注意執(zhí)行腳本方式第三種和前兩種的區(qū)別!
其他說(shuō)明:
shell腳本的建立:
shell腳本通常是在編輯器如vi中編寫,由unix/linux,bashshell命令,程序結(jié)構(gòu)控制語(yǔ)句和
注釋等內(nèi)容組成。
腳本開(kāi)頭(第一行):#!/bin/bash必須在第一行。
一個(gè)規(guī)范的shell腳本的第一行會(huì)指出由哪個(gè)程序來(lái)執(zhí)行腳本,一般為:
#!/bin/bash或#!/bin/sh
在執(zhí)行腳本的時(shí)候,內(nèi)核會(huì)根據(jù)它來(lái)確定該用哪個(gè)程序來(lái)解釋腳本中的內(nèi)容,這一行必須在
腳本頂端的第一行,如果不是第一行則為注釋。
linux中常用腳本語(yǔ)言開(kāi)頭的寫法,在不同的語(yǔ)言開(kāi)頭一般都要加一行相應(yīng)的標(biāo)識(shí)語(yǔ)言:
#!/bin/sed
#!/usr/bin/awk
#!/usr/bin/perl
默認(rèn)為bash的系統(tǒng),用bash可以不用在第一行加!為了養(yǎng)成好習(xí)慣,最好第一行加上!
腳本注釋:
跟在#后面的內(nèi)容。
shell腳本的執(zhí)行:
當(dāng)shell腳本文件以非交互方式運(yùn)行時(shí),它會(huì)先查找環(huán)境變量ENV,該變量指定了一個(gè)環(huán)境
文件,通常是.bashrc,然后從該環(huán)境變量文件開(kāi)始執(zhí)行,當(dāng)讀取了ENV文件后,SHELL才開(kāi)
始執(zhí)行shell腳本。
執(zhí)行shell腳本三種方法:
1.bash腳本名稱或sh腳本名稱
當(dāng)腳本文件本身沒(méi)有可執(zhí)行權(quán)限(X權(quán)限)使常用的方法。
2.path/腳本名稱或./腳本名稱
需要先將腳本權(quán)限改為可執(zhí)行權(quán)限(X權(quán)限),然后通過(guò)腳本路徑執(zhí)行。
3.source腳本名稱或.腳本名稱
使用這種方法讀入或加載指定的shell腳本(如san.sh),然后依次執(zhí)行指定shell腳本文
件san.sh中的所有語(yǔ)句。這些語(yǔ)句將作為當(dāng)前父shell腳本father.sh進(jìn)程的一部分運(yùn)行。
就是說(shuō)在當(dāng)前shell中執(zhí)行腳本文件,而不是產(chǎn)生一個(gè)子shell來(lái)執(zhí)行文件中的命令。
使用前兩種執(zhí)行腳本,是在當(dāng)前shell中啟動(dòng)一個(gè)子shell來(lái)運(yùn)行腳本程序,因此腳本程
序定義的環(huán)境變量只能在子shell環(huán)境中使用,無(wú)法再當(dāng)前的shell中使用.
source命令與shellscripts的區(qū)別是,source在當(dāng)前bash環(huán)境下執(zhí)行命令,而scripts是
啟動(dòng)一個(gè)子shell來(lái)執(zhí)行命令。這樣如果把設(shè)置環(huán)境變量(或alias等等)的命令寫進(jìn)scripts
中,就只會(huì)影響子shell,無(wú)法改變當(dāng)前的BASH,所以通過(guò)文件(命令列)設(shè)置環(huán)境變量時(shí),
要用source命令。
source命令(從CShell而來(lái))是bashshell的內(nèi)置命令。點(diǎn)命令,就是個(gè)點(diǎn)符號(hào),(從Bourne
Shell而來(lái))是source的另一名稱。同樣的,當(dāng)前腳本中配置的變量也將作為腳本的環(huán)境,
source(或點(diǎn))命令通常用于重新執(zhí)行剛修改的初始化文檔,如
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國(guó)鐵路物流行業(yè)十三五規(guī)劃與投資戰(zhàn)略研究報(bào)告
- 2025-2030年中國(guó)車燈模具行業(yè)市場(chǎng)前景規(guī)模及發(fā)展趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)蓮藕粉行業(yè)運(yùn)行態(tài)勢(shì)及發(fā)展趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)花露水市場(chǎng)風(fēng)險(xiǎn)評(píng)估規(guī)劃分析報(bào)告
- 2025-2030年中國(guó)胡麻油市場(chǎng)競(jìng)爭(zhēng)狀況及發(fā)展趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)聚碳酸酯板(陽(yáng)光板)行業(yè)發(fā)展趨勢(shì)規(guī)劃研究報(bào)告
- 2025-2030年中國(guó)縫制機(jī)械市場(chǎng)運(yùn)行現(xiàn)狀及發(fā)展趨勢(shì)分析報(bào)告
- 2025-2030年中國(guó)紙制品市場(chǎng)運(yùn)行現(xiàn)狀及發(fā)展前景預(yù)測(cè)報(bào)告
- 2025-2030年中國(guó)電玩行業(yè)運(yùn)行狀況及發(fā)展前景分析報(bào)告
- 2025-2030年中國(guó)電容筆行業(yè)發(fā)展?fàn)顩r及營(yíng)銷戰(zhàn)略研究報(bào)告
- 2025年01月2025廣東深圳市何香凝美術(shù)館公開(kāi)招聘應(yīng)屆高校畢業(yè)生2人筆試歷年典型考題(歷年真題考點(diǎn))解題思路附帶答案詳解
- 園林聘用勞動(dòng)合同
- 300畝文冠果樹栽培基地建設(shè)項(xiàng)目可行性研究報(bào)告
- 2025年菏澤職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2025年江西生物科技職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2025年度企業(yè)安全生產(chǎn)與環(huán)保管理服務(wù)協(xié)議范本3篇
- 2025-2030年中國(guó)巧克力產(chǎn)品市場(chǎng)需求狀況及發(fā)展趨勢(shì)分析報(bào)告
- 六年級(jí)下冊(cè)音樂(lè)全冊(cè)教案湖南文藝出版社湘教版
- Tracepro-實(shí)例學(xué)習(xí)教程
- 進(jìn)貨單出貨單(Excel表格模板)
- 質(zhì)監(jiān)站對(duì)監(jiān)理工作監(jiān)督的要點(diǎn)
評(píng)論
0/150
提交評(píng)論