曹魏太和二年(230),曹魏大司馬曹真策劃的伐蜀之戰以失敗而告終,這讓曹真跌了個大跟頭,因為這一仗是在他力排眾議下打的。
曹真病了,情況跟石亭戰敗後的曹休有些類似,這容易讓他聯想起袁紹和袁術,他們都自認為高人一頭,風雲際會,時勢造就英雄,他們也都幹出了一番事業,然而一旦遭受打擊卻一蹶不振。在亂世爭雄必須有一個強大的內心,在這方面他們遠不如曹操、劉備這些創業者,回顧曹操、劉備等人的一生,吃過無數苦,多次身處絕境,打過許多敗仗,但都以樂觀的心態挺了過來。
曹真一病不起,魏明帝趕緊命他回洛陽養病。曹真回到洛陽後病情不斷加重,魏明帝親自到府邸探望。不久曹真去世,魏明帝謚其為元侯,爵位由長子曹爽繼承,曹羲、曹訓、曹則、曹彥、曹皚等其餘幾個兒子也全都封為列侯。
曹真的去世是個標誌性事件,作為「諸夏侯曹」第二代的核心人物之一,他的離世標誌著這個把持了曹魏30多年軍權的集團已逐漸淡出,雖然此時「諸夏侯曹」中的第一代人物曹洪仍健在,擔任著屬於榮譽性職務的驃騎將軍,雖然「諸夏侯曹」的後人中還有多人在軍中任職,但他們已經沒有太大影響了,目前掌握曹魏軍權的是司馬懿、張郃、滿寵、蔣濟等一批異姓將領。
在曹魏三大戰場中,西線無疑是重中之重,魏明帝決定把坐鎮中線戰場的司馬懿調到那裡以接替曹真。魏明帝給司馬懿發去了詔書,其中寫道:「現在西線戰場出現了問題,非你去不行啊!」
話說得雖然很殷切,但這也許並不是魏明帝內心的真實想法,曹休死後魏明帝心裡感到了一絲孤單,對曹休、曹真兩位叔父他是完全放心的,對司馬懿,他有些吃不準。之前魏明帝之所以同意曹真伐蜀,也是基於對曹真的進一步扶持,希望以此打壓司馬懿,但事不湊巧,一場大雨擾亂了好事。
現在,魏明帝不得不依靠司馬懿,他下詔升司馬懿為大將軍,同時升張郃為車騎將軍,車騎將軍在班次上略低於曹洪擔任的驃騎將軍,但此時在魏軍裡是事實上的二號人物,讓軍界排名前兩位的將領同時集結在一個戰場,顯示出這是一項非同尋常的安排。
曹魏太和二年(231)諸葛亮決定再次由漢中北伐,這已經是他指揮的第四次北伐。
諸葛亮做了精心的準備,其中一項重大調整是,他命令此前一直駐守在江州的李嚴率2萬人馬來漢中,之後讓他以中都護的身份留守漢中,處理丞相府行營的各項事宜,重點保證前線的軍糧供應。諸葛亮還派人聯絡孫權,請他同時向曹魏發起攻擊。每次北伐前諸葛亮都會通知孫權,這已經形成了慣例,而孫權也都盡可能給予配合,因為對他們來說這同樣是一次進攻的好機會。
這一回孫權又使出了詐降計,他安排中郎將孫布向曹魏揚州刺史王凌詐降。不久前周魴詐降,曹休被打得大敗,王凌覺得孫權再笨也不會把剛使完的招數拿出來又用吧,所以竟然相信了。
王凌是漢末名臣王允的侄子,出身於著名的太原王氏家族,年輕時曾在曹操手下任職,曹丕在位時對他很器重,讓他當兗州刺史,又兼建武將軍,是曹魏政壇的新生力量。在石亭之戰中曹休率領的魏軍失利,王凌指揮所部拚死突圍才使曹休得以安全撤退,後任揚州刺史。
王凌有些心高氣傲,把頂頭上司征東將軍兼西線戰場總指揮(都督揚州諸軍事)滿寵也不放在眼裡,二人關係較差,王凌不斷讓人寫告狀信,想把滿寵趕走。對孫布投降這件事滿寵覺得可疑,王凌認為這是滿寵怕他建功,於是越過滿寵直接向魏明帝報告了情況。王凌和孫布進行了一段時間的接觸和試探,最後王凌徹底相信孫布投降是真的。
但滿寵仍然認為這裡面有陰謀,就以王凌的名義給孫布寫了封信,說自己這邊兵力不夠,讓他再等等,到時機成熟時再行動。這時,魏明帝突然下詔讓滿寵回洛陽商量事情,滿寵一走,王凌就加緊了與孫布「裡應外合」的準備,想在東線戰場創造出一個奇跡來,這場戲無論怎麼演,都牽動了曹魏東線戰場的注意力。
而在中線戰場的荊州方向,自從司馬懿離開後還沒有明確新的接替人選。這樣一來,形勢對蜀漢就十分有利,在曹魏三大戰場中,西線戰場的總指揮剛剛上任,中線戰場的總指揮還沒有明確的繼任者,東線戰場的總指揮臨時被召回,暫時負責的人又被孫權的反間計所吸引,在歷次北伐中,沒有比這更好的機會了。
對第四次北伐,諸葛亮選擇的路線是隴右,漢中西邊的武都、陰平二郡已被蜀軍掌握,所以蜀軍輕易就攻至祁山堡,將其包圍,魏軍守祁山堡的將領是賈栩和魏平,他們趕緊上報雍州刺史郭淮,請求支援。
司馬懿已經到了長安,他以大將軍、都督雍梁二州諸軍事的身份召集車騎將軍張郃、後將軍費曜、征蜀護軍戴陵、雍州刺史郭淮等重要將領開會,研究對策。
張郃認為隴右固然重要,但更重要的還是關中,應分兵駐紮在漢中的雍縣、郿縣等要地以防不測,司馬懿不同意這個看法,他認為:「如果前面的人馬能擋住敵人,將軍這麼說有理;如果擋不住,把人馬分成前後兩部,這就如當年項羽把人馬一分為三,反被黥布所打敗一樣。」漢高祖十一年(前196)楚將黥布叛逃,項羽出兵阻截,把楚軍分成三部,他的想法是,如果一部被打敗,另外兩部可以增援,但結果卻不是這樣的,黥布擊敗其中一部後其他兩部便迅速瓦解了,這說明分散兵力容易被對手各個擊破。
但張郃的意見也並非沒有道理,現在的主戰場看起來是隴右,但如果蜀軍在那邊只是佯攻,而將主力暗藏在秦嶺山中,待魏軍主力西進後,蜀軍主力迅速從秦嶺裡的各條棧道殺出直擊關中,那形勢就嚴峻了。
張郃久在西部,與蜀軍打過很多交道,著名的街亭之戰就是他指揮的,他的建議自然有一定道理,但司馬懿仍堅持自己的看法。這其實是一種賭博,賭的是諸葛亮沒有從秦嶺棧道用兵的計劃。
司馬懿隨後率魏軍主力前進到隃糜,此地在今陝西省千陽縣境內,之後命費曜、戴陵率4000人馬前往天水郡境內的要地上邽,自己率其餘主力趕往祁山,以解祁山堡之圍。
那麼,諸葛亮有沒有在秦嶺山中留一支奇兵呢?沒有。不是他智謀不足或不敢冒險,而是蜀軍無此實力。
經過前三次北伐,蜀軍損耗很大,在綜合實力方面蜀漢本來就遠遜於曹魏,也不如孫吳,由於總人口有限,蜀漢的常備軍人數一般只有10萬人左右,即使臨時加大徵兵的強度,總兵力也不會超過15萬人,分出三分之一守全國各處,能集中在漢中的頂多10萬人。這10萬人馬其實也無法同時全部調用,因為士兵有輪休制,一般情況下五分之四在軍,五分之一輪休,「在崗」的士兵總數只有8萬人上下了。
如果有充足的兵力,諸葛亮當然可以分兵兩處,根據對手的反應相機確定主攻方向,但現在卻不能,要麼把主力拉到隴右,要麼兵出秦嶺棧道,二者不可兼得,而將希望寄托在秦嶺山中的那幾條棧道,這一直都不是諸葛亮看好的方案。
此前諸葛亮和司馬懿從未有過直接交鋒,聽說曹魏新任的這位大將軍親自來了,諸葛亮立即調整部署,命王平率部屯紮在祁山附近的南圍,繼續攻擊祁山堡,自己率蜀軍主力去迎戰魏軍。但諸葛亮沒有直奔司馬懿本人而來,而是向上邽發起了攻擊,由於雙方兵力相差懸殊,郭淮、費曜被打敗,蜀軍佔領了上邽,司馬懿隨即率主力趕來,在上邽以東紮營。
蜀軍求戰,魏軍卻避戰不出,這是司馬懿的策略,他認為蜀軍的弱項一是人數不佔優勢,二是後勤保障不足,所以經不起耗,司馬懿命令魏軍憑借各自險要地勢加強防守。雍州總體上還是曹魏的地盤,隴右與關中的交通還算通暢,蜀軍難以獲得補給而對魏軍來說則不是大問題,司馬懿耗得起。
在求戰不能的情況下,諸葛亮決定撤退。
蜀軍後退,魏軍就往前移,始終保持一段距離,仍不進攻。就這樣,蜀軍一直退到祁山跟前,魏軍索性進到尚未被蜀軍攻克的祁山堡,司馬懿命令軍士在山上抓緊修築工事,擺出一副憑借高山深谷長期據守的姿態。
對大多數魏軍將領來說,過去跟著曹真和張郃時還從來沒有這麼窩囊過,敵人在面前不停地叫陣,自己卻龜縮在營壘裡不敢出來,多讓人喪氣!
賈栩、魏平等將領多次請戰,司馬懿一律拒絕,他們實在想不通,覺得堂堂大魏的軍隊還不至於這麼膽怯吧,他們對司馬懿說:「您畏懼蜀軍就像見到老虎,就不怕天下人恥笑嗎?」敢直接叫板頂頭上司,如果這不是一時的激憤之語,那只能說明司馬懿在這裡還無法服眾。的確,這裡的大部分將領對司馬懿還都比較陌生,之前有人可能會認為曹真的接班人應該是張郃,司馬懿這個不速之客橫插一道,怎能讓人服氣?
司馬懿不怕天下人恥笑,因為只有笑到最後才是王道,他認真研究過蜀軍的戰法,知道其優劣所在,在當前情況下守而不戰無疑是正確的選擇,但這些道理要讓每個人都懂也是一件難事。又過了幾天,魏軍將領都來請戰,司馬懿知道再不打就要出問題了。
5月10日司馬懿下令出擊,他讓張郃率一支人馬進攻南圍的蜀將王平所部,自己率主力進攻諸葛亮。魏軍放棄有利地勢發起主動進攻,這是諸葛亮求之不得的事,他立即指揮蜀軍全面應戰,結果魏軍大敗,被蜀軍斬殺3000人,蜀軍同時繳獲玄鐵打造的鎧甲5000副,弓弩3100張。
張郃在南圍方面的進攻也受阻,別看蜀軍攻堅不行,防守卻是一流的,尤其是他們的弓弩很厲害,對付騎兵相當有效,再凌厲的攻勢也穿不透如蝗的箭雨,南圍攻擊無果。事實證明一退再退的蜀軍不是紙老虎,它的爪子和牙齒都鋒利得很,對付它只能小心翼翼,這一仗讓那些對司馬懿不服的人暫時消停了下來。
雙方繼續對峙,對蜀軍來說越來越不利。
此時已到了夏秋之交,開始下起了連陰雨,蜀軍本來就很脆弱的運輸線終於出了問題,李嚴派參軍狐忠、督軍成藩突然來到前線,向諸葛亮報告說,由於陰雨連綿糧食實在無法供應,李嚴報告了後主,後主詔令諸葛亮回師。
諸葛亮讓李嚴留守在漢中,讓他負責丞相府裡的事,遇到問題李嚴應該先向自己匯報,是否撤兵應該由自己來定,李嚴不打招呼直接向後主做了匯報,這讓諸葛亮十分不快。現在雙方對壘,拼的是意志和決心,蜀軍有困難,魏軍也一樣,這就要看誰能堅持到最後了,輕易撤軍,那前面的所有付出豈不是白費了?如果要撤,幹嗎還要等到現在呢?
但現在諸葛亮沒有別的選擇,糧草供應不上,的確難以再支撐下去,更重要的是,一向不太管事的後主居然下詔讓他回師,他只能服從。
於是諸葛亮下令撤退,這一回不是佯退而是全面撤退,在祁山堡的司馬懿也看到了這種情況,下令追擊,張郃對此又表示反對:「兵法說,圍城一定要給個出口,撤退的敵人不要追擊。」然而司馬懿仍然堅持追擊,並且點名張郃率隊。
張郃不理解,也很無奈,但他是軍人,懂得服從,於是領兵去追。張郃率部沿著蜀軍主力撤退的方向一路追下去,一直追到了木門道這個地方,這是一條古道,東西兩面雄山壁立千仞,中間一線空谷,宛若門戶,當地百姓稱其為峽門,具體位置在今甘肅省天水市秦州區西南40公里的木門村附近。
這樣的地勢是打伏擊最理想之處,諸葛亮果然在此設下了伏兵,魏軍到時,埋伏在峽谷兩側的弓弩手萬箭齊發,魏軍將士紛紛落馬。有的史書說,一支冷箭射中了張郃的右膝。還有的史書說,射中的是張郃的髀骨,總之張郃中了箭。還有一部史書記載得更詳細,說張郃一路追到木門道,突然發現路邊有一棵大樹被削了皮,上面題寫著「張郃死此樹下」幾個字,張郃正遲疑間,蜀軍埋伏在兩側的數千張強弩便一齊向魏軍射來,張郃死於亂箭。
細節上儘管略有些出入,但結果卻是一樣的:魏軍大敗,損失慘重,堂堂的曹魏車騎將軍也被射死了。
這一仗讓魏軍充分領教了蜀軍弓弩手的厲害,這是一支在當時最為強悍的弓弩兵,他們手中持有一種特製的武器——諸葛連弩,這是諸葛亮革新兵器的一項發明。
對張郃的死歷來有不少人認為是司馬懿的陰謀,張郃的地位僅次於司馬懿,在軍中素有威望,在一些問題上又多與司馬懿存在分歧,被司馬懿視為眼中釘,所以故意逼死了張郃。但這只能是猜測,蜀軍敗退,司馬懿下令去追,這是沒有問題的,至於張郃戰死,那只能說是個意外,或者是他自己不小心,司馬懿又有什麼責任呢?如果真是借刀殺人,也只能說司馬懿做得實在太高明了,高明得讓誰都挑不出理來。
張郃的死讓魏明帝最傷心,聽到這個消息時他正與司空陳群談事,魏明帝悲傷地對陳群說:「蜀國未平,張將軍卻死了,你說該怎麼辦啊?」魏明帝的心情陳群也許最能體會,但他也只能應道:「張將軍確實是一代良將,是國家的依靠啊!」魏明帝下詔謚張郃為壯侯,爵位由其長子張雄繼承,其餘五個兒子中有四人被封為列侯,一人被封為關內侯。