




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 下載第26章 shell工 具本章將討論以下內(nèi)容:創(chuàng)建以日期命名的文件及臨時(shí)文件。信號(hào)。 trap命令以及如何捕獲信號(hào)。eval命令。 logger命令。 26.1創(chuàng)建保存信息的文件任何腳本都應(yīng)該能夠創(chuàng)建臨時(shí)文件或日志文件。在運(yùn)行腳本做備份時(shí),最好是保存一個(gè)日志文件。這些日志文件通常在文件系統(tǒng)中保留幾周,過時(shí)將被刪除。 在開發(fā)腳本的時(shí)候,可能總要?jiǎng)?chuàng)建一些臨時(shí)的文件。在正常運(yùn)行腳本的時(shí)候,也要使用臨時(shí)文件保存信息,以便作為另外一個(gè)進(jìn)程的輸入??梢允褂?cat命令來顯示一個(gè)臨時(shí)文件的 內(nèi)容或把它打印出來。 26.1.1 使用date命令創(chuàng)建日志文件 在創(chuàng)建日志文件時(shí),最好能夠使它具有唯一性,可以
2、按照日志文件創(chuàng)建的日期和時(shí)間來識(shí)別這些文件。我們可以使用date命令做到這一點(diǎn)。這樣就能夠使日期和時(shí)間成為日志文件名中的一部分。 為了改變?nèi)掌诤蜁r(shí)間的顯示格式,可以使用如下的命令: date option + % format使用加號(hào)+可以設(shè)置當(dāng)前日期和時(shí)間的顯示格式。下面的例子將日期以日、月、年的格式顯示: 下面是一些常用的日期格式: 下面的命令可以使時(shí)間按照hh:mm的格式顯示: 下面的命令可以顯示完整的時(shí)間: 290第五部分 高級(jí)shell編程技巧 下載注意,如果希望在日期和時(shí)間的顯示中包含空格,要使用雙引號(hào)。 在文件名中含有日期的一個(gè)簡單辦法就是使用置換。把含有你所需要的日期格式的變量
3、附加在相應(yīng)的日志文件名后面即可。 在下面的例子中我們創(chuàng)建了兩個(gè)日志文件,一個(gè)使用了 dd,mm,yy的日期格式,另一個(gè)使用了dd,hh,mm的時(shí)間格式。 下面就是這個(gè)腳本。 運(yùn)行上面的腳本后,得到這樣兩個(gè)日志文件。 26.1.2 創(chuàng)建唯一的臨時(shí)文件 在本書的前面討論特殊變量時(shí),曾介紹變量 $,該變量中保存有你所運(yùn)行的當(dāng)前進(jìn)程的進(jìn)程號(hào)。可以使用它在我們運(yùn)行的腳本中創(chuàng)建一個(gè)唯一的臨時(shí)文件,因?yàn)樵撃_本在運(yùn)行時(shí)的進(jìn)程號(hào)是唯一的。我們只要?jiǎng)?chuàng)建一個(gè)文件并在后面附加上 $即可。在腳本結(jié)束時(shí),只需刪除帶有$擴(kuò)展的臨時(shí)文件即可。 Shell將會(huì)把$解析為當(dāng)前的進(jìn)程號(hào),并刪除相應(yīng)的文件,而不會(huì)影響以其他進(jìn)程號(hào)做后
4、綴的文件。 在命令行中輸入如下的命令: 這就是當(dāng)前的進(jìn)程號(hào),如果你執(zhí)行這個(gè)命令,看到的結(jié)果可能會(huì)有所不同?,F(xiàn)在如果我創(chuàng)建另一個(gè)登錄進(jìn)程并輸入同樣的命令,將會(huì)得到一個(gè)不同的進(jìn)程號(hào),因?yàn)槲乙呀?jīng)啟動(dòng)了一 個(gè)新的進(jìn)程。 下面的例子中,創(chuàng)建了兩個(gè)臨時(shí)文件,并進(jìn)行了相應(yīng)的操作,最后在結(jié)束時(shí)刪除了這些 文件。 第 26 章 shell 工 具291 下載當(dāng)上面的腳本運(yùn)行時(shí),將會(huì)創(chuàng)建這樣兩個(gè)文件: 在執(zhí)行rm /tmp/*.$時(shí),shell實(shí)際上將該命令解析為rm /tmp/*.408。 記住,該進(jìn)程號(hào)只在當(dāng)前進(jìn)程中唯一。例如,如果我再次運(yùn)行上面的腳本,將會(huì)得到一個(gè)新的進(jìn)程號(hào),因?yàn)槲乙呀?jīng)創(chuàng)建了一個(gè)新的進(jìn)程。
5、如果文件有特殊用途的話,那么創(chuàng)建含有日期的文件,就可以使你很容易地查找到它們。而且還可以很容易地按照日期刪除文件,因?yàn)檫@樣一眼就能看出哪個(gè)文件是最新的,哪個(gè)文件是最“舊”的。 還可以使用這種方法來快速地創(chuàng)建臨時(shí)文件,它們?cè)诋?dāng)前進(jìn)程中是唯一的。在腳本結(jié)束 之前,也很容易刪除這些臨時(shí)文件。 26.2信號(hào)信號(hào)就是系統(tǒng)向腳本或命令發(fā)出的消息,告知它們某個(gè)的發(fā)生。這些通常是內(nèi)存錯(cuò)誤 ,訪問權(quán)限問題或某個(gè)用戶試圖停止你的進(jìn)程。信號(hào)實(shí)際上是一些數(shù)字。下表列出了 最常用的信號(hào)及它們的含義。 信號(hào)信 號(hào) 名 含義12391115SIGHUP SIGINT SIGQUIT SIGKILL SIGSEGVSIGTE
6、RM掛起或父進(jìn)程被殺死 來自鍵盤的中斷信號(hào),通常是 從鍵盤退出無條件終止 段(內(nèi)存)沖突 軟件終止(缺省殺進(jìn)程信號(hào)) 還有信號(hào)0,我們前面在創(chuàng)建.logout文件時(shí)已經(jīng)遇到過。該信號(hào)為“退出 shell”信號(hào)。為了發(fā)出信號(hào)0,只要從命令行鍵入exit,或在一個(gè)進(jìn)程或命令行中使用即可。 發(fā)送信號(hào)可以使用如下的格式: kill -signal no:| signal name process ID使用kill命令時(shí)不帶任何信號(hào)或名字意味著使用缺省的信號(hào) 15??梢允褂萌缦碌拿盍谐鏊械男盘?hào): 292第五部分 高級(jí)shell編程技巧 下載26.2.1 殺死一個(gè)進(jìn)程 發(fā)送信號(hào)1將使一個(gè)進(jìn)程重新讀入配
7、置文件。例如,你在運(yùn)行域名服務(wù)( DNS)守護(hù)進(jìn)程named,現(xiàn)在你對(duì)域名數(shù)據(jù)庫文件做了某些修改,這時(shí)不需要?dú)⑺涝撌刈o(hù)進(jìn)程再重新啟動(dòng),只需使用kill -1命令向其發(fā)送信號(hào)1。Named進(jìn)程將重新讀入它的配置文件。 下面的例子向系統(tǒng)中一個(gè)名為 mon_web的進(jìn)程發(fā)送信號(hào)9(無條件終止)來殺死它。首先 使用ps命令得到相應(yīng)的進(jìn)程號(hào)。 如果系統(tǒng)不支持ps -ef命令,那么可以使用ps xa。為了殺死該進(jìn)程,我可以使用下面的兩種方法之一: kill -9 157或 kill -s SIGKILL157在有些系統(tǒng)中,不必使用-s,例如: kill SIGKILL 157。 下面的腳本將根據(jù)進(jìn)程名來殺
8、死一個(gè)進(jìn)程,擬被殺死的進(jìn)程名作為該腳本的一個(gè)參數(shù)。在執(zhí)行相應(yīng)的命令之前,將會(huì)首先檢查是否存在這樣的進(jìn)程。在這里使用 grep命令來匹配相應(yīng)的進(jìn)程名。如果匹配成功,則向用戶提示進(jìn)程已經(jīng)找到,并詢問用戶是否殺死該進(jìn)程。最后使用kill - 9命令殺死相應(yīng)的進(jìn)程。 下面就是該腳本。 第 26 章 shell 工 具293 下載運(yùn)行該腳本將會(huì)產(chǎn)生如下的輸出: 在使用該腳本時(shí),要確信存在相應(yīng)的進(jìn)程: 26.2.2 檢測信號(hào) 有些信號(hào)可以被應(yīng)用程序或腳本捕獲,并依據(jù)該信號(hào)采取相應(yīng)的行動(dòng)。另外一些信號(hào)不能獲。例如,如果一個(gè)命令收到了信號(hào) 9,就無法再捕捉其他信號(hào)。 在編寫shell腳本時(shí),只需關(guān)心信號(hào) 1、
9、2、3和15。當(dāng)腳本捕捉到一個(gè)信號(hào)后,它可能會(huì)采取下面三種操作之一: 1) 不采取任何行動(dòng),由系統(tǒng)來進(jìn)行處理。 2) 捕獲該信號(hào),但忽略它。 294第五部分 高級(jí)shell編程技巧 下載3) 捕獲該信號(hào),并采取相應(yīng)的行動(dòng)。 大多數(shù)的腳本都使用第一種處理方法,這也是到目前為止本書中所有腳本所采取的處理方法。 如果想要采取另外兩種處理方法,必須使用 trap命令。 26.3traptrap可以使你在腳本中捕捉信號(hào)。該命令的一般形式為: trap name signal(s)其中, name是捕捉到信號(hào)以后所采取的一系列操作。實(shí)際生活中, name一般是一個(gè)專門用來處理所捕捉信號(hào)的函數(shù)。 Name需
10、要用雙引號(hào)(“ ”)引起來。Signal就是待捕捉的信號(hào)。 腳本在捕捉到一個(gè)信號(hào)以后,通常會(huì)采取某些行動(dòng)。最常見的行動(dòng)包括: 1) 清除臨時(shí)文件。 2) 忽略該信號(hào)。 3) 詢問用戶是否終止該腳本的運(yùn)行。 下表列出了一些最常見的trap命令用法: trap 2 3trapcommands 2 3trap 2 3忽略信號(hào)2和信號(hào)3,用戶不能終止該腳本 如果捕捉到信號(hào)2或3,就執(zhí)行相應(yīng)的commands命令復(fù)位信號(hào)2和3,用戶可以終止該腳本 也可以使用單引號(hào)()來代替雙引號(hào)(“”);其結(jié)果是一樣的。26.3.1 捕獲信號(hào)并采取相應(yīng)的行動(dòng) 下面的例子一經(jīng)運(yùn)行就開始計(jì)數(shù)直至用戶按 (信號(hào)2)。這時(shí)該腳
11、本將會(huì)顯示出當(dāng)前的循環(huán)數(shù)字,然后退出。 在本例中trap命令的格式為: trap do_ something signal下面就是該腳本: no:( s)現(xiàn)在讓我們來仔細(xì)分析一下該腳本。 第 26 章 shell 工 具295 下載trap my_ exit 2在本例中,由于設(shè)置了trap命令,所以在捕捉到信號(hào) 2以后,雙引號(hào)內(nèi)的my_exit函數(shù)將被執(zhí)行。 函數(shù)my_exit將在腳本捕捉到信號(hào) 2后被調(diào)用;用戶將會(huì)看到 $LOOP變量的內(nèi)容,即用戶按時(shí)的計(jì)數(shù)值。在實(shí)際中,通常捕捉到信號(hào) 2后所調(diào)用的函數(shù)是用來完成清除臨時(shí)文件等任務(wù)的。 下面是該腳本的運(yùn)行結(jié)果: 26.3.2 捕獲信號(hào)并采取行
12、動(dòng)的另一個(gè)例子 下面就是一個(gè)捕獲信號(hào)后清除臨時(shí)文件的例子。 下面的腳本在運(yùn)行時(shí)不斷使用 df和ps命令向臨時(shí)文件HOLD1.$和HOLD2.$中寫入相應(yīng)的信息。你應(yīng)該還記得 $表示當(dāng)前的進(jìn)程號(hào)。當(dāng)用戶按 時(shí),這些臨時(shí)文件將被清除。 296第五部分 高級(jí)shell編程技巧 下載上面的腳本在運(yùn)行時(shí)會(huì)產(chǎn)生如下的結(jié)果: 當(dāng)收到信號(hào)2或3時(shí),盡管一般情況下這都不是誤操作,但是為了安全起見,不妨給用戶一個(gè)選擇的機(jī)會(huì),這樣用戶在不小心按下 后,仍然可以撤消剛才的動(dòng)作。 在下面的例子中,在腳本捕捉到信號(hào) 2后將會(huì)向用戶提供一個(gè)選擇,詢問用戶是否真的要退出。這里使用case語句來決定采取何種操作。 如果用戶希望
13、退出,他或她可以選擇 1,此時(shí)當(dāng)前函數(shù)會(huì)以狀態(tài) 1退出,而另一個(gè)清除進(jìn)程將會(huì)據(jù)此啟動(dòng)。如果用戶并不希望退出,那么可以選擇 2或不做任何選擇,此時(shí)case語句將會(huì)使用戶退回到腳本中原來的地方。在case語句中一定要包含用戶輸入空字符串的情況。 下面的函數(shù)在收到信號(hào)后,將會(huì)向用戶提供選擇: 下面是完整的腳本: 第 26 章 shell 工 具297 下載當(dāng)上面的腳本運(yùn)行時(shí),只要在輸入任何域時(shí)按下 ,就會(huì)得到一個(gè)選擇:是繼續(xù) 運(yùn)行還是退出。 26.3.3 鎖住終端 下面的腳本是另一個(gè)捕獲信號(hào)的例子。該腳本名為 lockit,它將使用一個(gè)連續(xù)不斷的while 循環(huán)鎖住終端。在該腳本中, trap命令捕
14、捉信號(hào)2、3和15。如果一個(gè)用戶試圖中斷該腳本的運(yùn)行,將會(huì)得到一個(gè)不成功的提示。 在腳本初次執(zhí)行時(shí),將會(huì)被提示輸入一個(gè)口令。在解鎖終端時(shí)沒有任何提示,可以直接輸入口令并按回車鍵。該腳本會(huì)從終端讀入所輸入的口令,并與預(yù)先設(shè)置的口令做比較,如果一致就解鎖終端。 如果忘記了自己的口令,那么只好登錄到另一個(gè)終端上并殺死該進(jìn)程。在本例中沒有對(duì)口令的長度加以限制這完全取決于你。 如果你從另外一個(gè)終端上殺死了該進(jìn)程,當(dāng)再次回到這個(gè)終端時(shí),可能會(huì)遇到終端設(shè)置問題,例如回車鍵不起作用。這時(shí)可以試著使用下面的命令,這樣可以解決大部分問題。 $ stty sane下面就是該腳本。 298第五部分 高級(jí)shell編程
15、技巧 下載下面是lockit腳本運(yùn)行時(shí)的輸出: 接著屏幕就被清除。如果按回車鍵或其他錯(cuò)誤的口令,該腳本將會(huì)輸出: 現(xiàn)在輸入正確的口令: 現(xiàn)在又回到命令提示符下了。26.3.4 忽略信號(hào) 在用戶登錄時(shí),系統(tǒng)將會(huì)執(zhí)行/etc/profile文件,根用戶不希望其他普通用戶打斷這一進(jìn)程。他通常通過設(shè)置trap來屏蔽信號(hào)1、2、3和15,然后在用戶讀當(dāng)天的消息時(shí)重新打開這些信號(hào)。最后仍然回到屏蔽這些信號(hào)的狀態(tài)。 在編寫腳本時(shí)也可以采用類似的辦法。在腳本運(yùn)行的某些關(guān)鍵時(shí)刻,比如打開了很多文 第 26 章 shell 工 具299 下載件時(shí),不希望該腳本被中斷,以免破壞這些文件。通過設(shè)置 trap來屏蔽某些
16、信號(hào)就可以解決這個(gè)問題。在這些關(guān)鍵性的處理過程結(jié)束后,再重新打開信號(hào)。 忽略信號(hào)的一般格式為(信號(hào) 9除外): trapsignal no:(s)注意,在雙引號(hào)之間沒有任何字符,為了重新回到捕捉信號(hào)的狀態(tài),可以使用如下的命令: trapdo something signalno:( s)下面我們來總結(jié)一下上述方法。 trap 1 2 3 15:忽略信號(hào)。關(guān)鍵性的處理過程 trapmy_exit 1 2 3 15:重新回到捕捉信號(hào)的狀態(tài),在捕捉到信號(hào)后調(diào)用 my_exit函數(shù)。下面就是一個(gè)這樣的例子,其中的“關(guān)鍵”過程實(shí)際上是一個(gè) while循環(huán),但它能夠很好 地說明這種方法。在第一個(gè)循環(huán)中,通
17、過設(shè)置 trap來屏蔽信號(hào),但是在第二個(gè)例子中,又回到捕捉信號(hào)的狀態(tài)。 兩個(gè)循環(huán)都只數(shù)到6,不過在循環(huán)中使用了一個(gè)sleep命令,這樣就可以有充分的時(shí)間來實(shí)驗(yàn)中斷該循環(huán)。 下面就是腳本。 300第五部分 高級(jí)shell編程技巧 下載在上面的腳本在運(yùn)行時(shí),如果我們?cè)诘谝粋€(gè)循環(huán)期間按下 ,它不會(huì)有任何反應(yīng), 這是因?yàn)槲覀兺ㄟ^設(shè)置trap屏蔽了信號(hào);而在第二個(gè)循環(huán)中由于重新回到捕捉信號(hào)的狀態(tài),按 下就會(huì)調(diào)用my_exit函數(shù)。 當(dāng)腳本捕獲到信號(hào)時(shí),通過使用trap命令,可以更好地控制腳本的運(yùn)行。捕獲信號(hào)并進(jìn)行 處理是一個(gè)腳本健壯性的標(biāo)志。 26.4evaleval命令將會(huì)首先掃描命令行進(jìn)行所有的置換
18、,然后再執(zhí)行該命令。該命令適用于那些一次掃描無法實(shí)現(xiàn)其功能的變量。該命令對(duì)變量進(jìn)行兩次掃描。這些需要進(jìn)行兩次掃描的變量有時(shí)被稱為復(fù)雜變量。不過我覺得這些變量本身并不復(fù)雜。 eval命令也可以用于回顯簡單變量,不一定是復(fù)雜變量。 解釋eval命令是怎么回事的最好辦法就是看幾個(gè)例子。 26.4.1 執(zhí)行含有字符串的命令 我們首先創(chuàng)建一個(gè)名為testf的小文件,在這個(gè)小文件中含有一些文本。接著,將 cat testf賦給變量MYFILE,現(xiàn)在我們echo該變量,看看是否能夠執(zhí)行上述命令。 現(xiàn)在我們將cat testf賦給變量MYFILE。 $ MYFILE“= ca t te st”f 第 26 章
19、 shell 工 具301 下載如果我們echo該變量,我們將無法列出testf文件中的內(nèi)容。 讓我們來試一下eval命令,記住eval命令將會(huì)對(duì)該變量進(jìn)行兩次掃瞄。 從上面的結(jié)果可以看出,使用eval命令不但可以置換該變量,還能夠執(zhí)行相應(yīng)的命令。第一次掃描進(jìn)行了變量置換,第二次掃描執(zhí)行了該字符串中所包含的命令 cat testf。 下面是另一個(gè)例子。一個(gè)名為CAT_PASSWD的變量含有字符串“ cat /etc/passwd | more”。 eval 命令可以執(zhí)行該字符串所對(duì)應(yīng)的命令。 eval命令還可以用來顯示出傳遞給腳本的最后一個(gè)參數(shù)?,F(xiàn)在來看下面的這個(gè)例子。 在運(yùn)行上述腳本時(shí),我們
20、會(huì)看到如下的結(jié)果(你所看到進(jìn)程號(hào)可能會(huì)不一樣):在上面的腳本中, eval命令首先把$#解析為當(dāng)前shell的參數(shù)個(gè)數(shù),然后在第二次掃描時(shí) 得出最后一個(gè)參數(shù)。 26.4.2 給每個(gè)值一個(gè)變量名 可以給一個(gè)值一個(gè)變量名。下面我對(duì)此做些解釋,假定有一個(gè)名為 data的文件: 你希望該文件中的第一列成為變量名,第二列成為該變量的值,這樣就可以: 怎樣才能做到這一點(diǎn)呢?當(dāng)然是使用eval命令。 302第五部分 高級(jí)shell編程技巧 下載我們用data文件的第一行來解釋上述腳本的執(zhí)行過程,該腳本讀入“ PC”和“ 486”兩個(gè)詞,把它們分別賦給變量 NAME和TYPE。Eval命令的第一次掃描把NAM
21、E和TYPE分別置換為“PC”和“486”,第二次掃描時(shí)將PC作為變量,并將“ 486”作為變量的值。 下面是運(yùn)行上述腳本的結(jié)果: eval命令并不是一個(gè)在腳本中很常見的命令,但是如果需要對(duì)變量進(jìn)行兩次掃瞄的話,就 要使用eval命令了。 26.5logger命令 系統(tǒng)中含有相當(dāng)多的日志文件。其中的一個(gè)日志文件叫作 messages,它通常位于/var/adm 或/var/log目錄下。一個(gè)名為syslog的配置文件可以用來定義記錄在messages文件中的消息,這些消息有一定的格式。如果想知道系統(tǒng)中的相應(yīng)配置,可以查看 /etc/syslog.conf文件。該文件中包含了用于發(fā)送各種不同類型
22、消息的工具及它們的優(yōu)先級(jí)。 這里我們并不想深入探討UNIX和LINUX是如何向該文件中記錄信息的。我們現(xiàn)在只要知道這些消息有不同的級(jí)別,從信息性的消息到關(guān)鍵性的消息。 還可以使用logger命令向該文件發(fā)送消息。在使用該命令之前,最好查閱連機(jī)手冊(cè),因?yàn)樵诓煌?yīng)商所提供的操作系統(tǒng)上該命令的語法也有所不同。 不過,由于這里只涉及到信息性的消息,因此不必?fù)?dān)心下面的命令不安全。你可能會(huì)出于下列的原因向該文件中發(fā)送消息: 在某一個(gè)特定的時(shí)間段出現(xiàn)的訪問或登錄。 你的某些執(zhí)行關(guān)鍵任務(wù)的腳本運(yùn)行失敗。 監(jiān)控腳本的報(bào)告。 下面是/var/adm/messages文件的例子。在系統(tǒng)上所看到的相應(yīng)文件可能和下面的例子有少許差別。 logger命令的一般形式為: logger -p -Ime
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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個(gè)人工作總結(jié)以及來年計(jì)劃(9篇)
- 中班十一月份工作總結(jié)【12篇】
- 項(xiàng)目決策中的風(fēng)險(xiǎn)評(píng)估方式試題及答案
- 注冊(cè)會(huì)計(jì)師復(fù)習(xí)資料試題及答案
- 2025至2031年中國聚氨酯拋光圓片行業(yè)投資前景及策略咨詢研究報(bào)告
- 2025年特許金融分析師考試市場選擇試題及答案
- 2025年注冊(cè)會(huì)計(jì)師考試企業(yè)戰(zhàn)略管理試題及答案
- 準(zhǔn)備就緒2025年國際金融理財(cái)師考試試題及答案
- 2025年注冊(cè)會(huì)計(jì)師考試產(chǎn)業(yè)分析案例試題及答案
- 銀行客戶服務(wù)技巧試題及答案
- 2024年南京市中考?xì)v史試題及答案
- 小學(xué)生衛(wèi)生知識(shí)健康教育精課件
- A類供應(yīng)商績效評(píng)價(jià)表
- 新目標(biāo)英語初三英語總復(fù)習(xí)資料講義
- 體育館鋼結(jié)構(gòu)工程馬道施工方案
- 2024年全國中學(xué)生數(shù)學(xué)奧林匹克競賽內(nèi)蒙古賽區(qū)初賽試卷(解析版)
- 四川省建筑與橋梁結(jié)構(gòu)監(jiān)測實(shí)施與驗(yàn)收標(biāo)準(zhǔn)
- 2024屆山東省濰坊市六年級(jí)下學(xué)期小升初真題數(shù)學(xué)試卷含解析
- 加油站股東合作的協(xié)議書
- 2024招商引資協(xié)議書范本
- 新會(huì)計(jì)準(zhǔn)則下國有企業(yè)財(cái)務(wù)管理創(chuàng)新策略研究
評(píng)論
0/150
提交評(píng)論