定時(shí)任務(wù)--java版本號(hào)輸出次數(shù)
在定時(shí)任務(wù)中有兩個(gè)任務(wù)
*?*?*?*?*?source?/etc/profile;sh?/root/test.sh *?*?*?*?*?source?/root/.bash_profile;sh?/root/test.sh
并且都是執(zhí)行/root/test.sh腳本,
#?/root/test.sh java?-version?2>?/root/script.out
這樣的話,java版本號(hào)不應(yīng)該被輸出兩次嗎?為什么演示的文件里面只有一次
2018-07-04
感謝這位同學(xué)關(guān)注老師的這門課程
這里
java?-version?2>?
/root/script
.out
這條命令是是將java -version的輸出重定向到script.out中
2>代表shell錯(cuò)誤重定向輸出, 而不是將java版本號(hào)輸出兩次.2并不代表次數(shù),只是一個(gè)符號(hào).
相對(duì)的1>代表shell標(biāo)準(zhǔn)重定向輸出, 等同于我們平時(shí)經(jīng)常用的>
類似的命令可以是 echo "test" > /root/test.out
這里因?yàn)閖ava -version的輸出不是一個(gè)標(biāo)準(zhǔn)輸出, 所以我們不能用>或者1>去將其輸出重定向到一個(gè)文件.
如果這么寫將無(wú)法輸出到指定文件, 所以這里只能用2>去將其作為錯(cuò)誤重定向到一個(gè)文件.
如何區(qū)別使用>和2>
老師這里的秘訣就是一般我們的shell自帶的命令例如cat, echo都可以用>去做標(biāo)準(zhǔn)重定向.
第三方的工具, 類似java, php, python我們則需要使用2>去做一個(gè)錯(cuò)誤重定向輸出.
不知道老師這么回答你是否能夠理解?
2018-10-17
是這樣的,老師這邊的重定向使用的是"2>",而不是"2>>"。
單單使用">"的話,會(huì)發(fā)生覆蓋;使用">>"是追加(append);
所以老師這邊雖然定時(shí)任務(wù)執(zhí)行了這個(gè)腳本兩次,但是輸出內(nèi)容發(fā)生了覆蓋,所以只輸出了一次。簡(jiǎn)單起見,可以不使用定時(shí)任務(wù),直接執(zhí)行這個(gè)腳本兩次,并使用不同的輸出定向符,看看效果。
另外,老師的解答里邊使用 > 和 >2的小竅門真的是很受用^-^