當前位置:首頁 » 編程語言 » shell獲取java返回值

shell獲取java返回值

發布時間: 2023-12-15 12:17:48

㈠ shell腳本調java程序,獲取JAVA程序返回值並echo輸出

先運行java程序,然後用echo $?獲取程序的運行結果,如果是字元串,可以使用
result=$(java -jar xxx.jar)來獲取,當然這只是示例,$()中的命令使可以隨便修改的

㈡ java 怎麼取外部程序運行後的返回值

JAVA 中 process 類的使用
Process是一個抽象類 封裝了一個進程
創建 process
Process p = Runtime.getRuntime().exec(cmd); cmd 是字元串類型 也可以是字元串類型的數組 內容就是 命令行
Process p =ProcessBuilder.start();
Process 類提供了子進程的輸入流,子進程的輸出流子進程的輸入流,等待進程完成,檢查進程的退出狀態以及銷毀進程的方法;
創建的子進程沒有自己的控制台或終端,其所有的io操作都是通過(輸入流、輸出流、錯誤流)重定向到父進程中。
destroy()
殺掉子進程。
exitValue()
返回子進程的出口值。
InputStream getErrorStream()
獲得子進程的錯誤流。
InputStream getInputStream()
獲得子進程的輸入流。
OutputStream getOutputStream()
獲得子進程的輸出流。
waitFor()
導致當前線程等待,如果必要,一直要等到由該 Process 對象表示的進程已經終止。
-------分割線,以上來自網路-------
其中的exitValue()函數返回值就是你需要的東西。按照你的示例,return 12345,取得的值不一定等於12345,因為每個不同的shell對於程序退出的返回值是有自己的定義的,不一定是把程序return的值直接返回。可以查看各類shell的編程幫助。

㈢ 急,java中telnet訪問遠程電腦,然後執行cmd命令,再獲取返回值。

需要個jar包:commons-net-3.3-bin.zip

下載地址:http://commons.apache.org/proper/commons-net/download_net.cgi


你找的代碼我修改過了,復制直接使用。linux系統需要先開啟telnet服務

//執行的命令
System.out.println(she.sendCommand("ll"));

這個輸入linux 命令

importjava.io.InputStream;
importjava.io.PrintStream;

importorg.apache.commons.net.telnet.TelnetClient;

publicclassShell{
privateTelnetClienttelnet=newTelnetClient();

privateInputStreamin;

privatePrintStreamout;

privatecharprompt='$';//普通用戶結束

publicShell(Stringip,intport,Stringuser,Stringpassword){
try{
telnet.connect(ip,port);
in=telnet.getInputStream();
out=newPrintStream(telnet.getOutputStream());
//根據root用戶設置結束符
this.prompt=user.equals("root")?'#':'>';
login(user,password);
}catch(Exceptione){
e.printStackTrace();
}
}

/**
*登錄
*
*@paramuser
*@parampassword
*/
publicvoidlogin(Stringuser,Stringpassword){
//read()Until("login:");
readUntil("login:");
write(user);
readUntil("Password:");
write(password);
readUntil(prompt+"");
}

/**
*讀取分析結果
*
*@parampattern
*@return
*/
publicStringreadUntil(Stringpattern){
try{
charlastChar=pattern.charAt(pattern.length()-1);
StringBuffersb=newStringBuffer();
charch=(char)in.read();
while(true){
sb.append(ch);
if(ch==lastChar){
if(sb.toString().endsWith(pattern)){
returnsb.toString();
}
}
ch=(char)in.read();
System.out.print(ch);
}
}catch(Exceptione){
e.printStackTrace();
}
returnnull;
}

/**
*寫操作
*
*@paramvalue
*/
publicvoidwrite(Stringvalue){
try{
out.println(value);
out.flush();
}catch(Exceptione){
e.printStackTrace();
}
}

/**
*向目標發送命令字元串
*
*@paramcommand
*@return
*/
publicStringsendCommand(Stringcommand){
try{
write(command);
returnreadUntil(prompt+"");
}catch(Exceptione){
e.printStackTrace();
}
returnnull;
}

/**
*關閉連接
*/
publicvoiddisconnect(){
try{
telnet.disconnect();
}catch(Exceptione){
e.printStackTrace();
}
}

publicstaticvoidmain(String[]args){
// TelnetClienttelnet=newTelnetClient();
try{
Shellshe=newShell("192.168.1.10",23,"root","123456");
System.out.println(she);
//執行的命令
System.out.println(she.sendCommand("ll"));
she.disconnect();

}catch(Exceptione){
//TODO:handleexception
}

}
}

㈣ shell里判斷返回值的問題

你不要輸出結果,那就將結果重定向至 /dev/null 即可,具體代碼就是:

你的命令後面加上 >/dev/null 就不會有輸出結果了。舉個簡單的例子:

ping -c 192.168.1.1 這個命令,用於判斷到這個IP是否暢通,如果你在後面不加上重定向。

那麼每次都會輸出結果,也就是你現在的情況。所以下面代碼我就在ping的後面加上了重定向

代碼,讓結果屏蔽,僅獲取返回值$?,那屏幕上就不會顯示ping的結果了,只會顯示下面判斷結果,懂了么?

#!/bin/bash
ping-c2192.168.1.1>/dev/null
if[$?-eq0];then
echo192.168.1.1isokey!
else
echo192.168.1.1isfailed!
fi

㈤ 每天三分鍾搞定linux shell腳本26 函數返回值

函數可以產生返回值,有3個方法。
1)默認情況下是 最後一條語句對應的退出狀態碼
2) return 一個整數值
3)使用 echo語句 指定輸出
針對 方法1 建立如下腳本:

運行後輸出結果為:

針對 方法2 建立腳本:

運行後結果為:

針對 方法3 建立腳本

運行後輸出結果為:

方法3使用echo語句來返回結果,而且 並沒有把這個輸出到stdout 中。

函數返回數組與參數傳遞數組一樣,使用echo語句。舉例如下:

運行後輸出結果為:

㈥ 怎麼設置awk的返回值然後讓shell獲取

cnbubble@~/test:$catrr.sh
#!/bin/bash
functionergodic(){
forfilein`ls$1`
do
if[-d"$1/"$file]
then
echo"$1/$file"
ergodic"$1/$file"
#else
#echo$file
fi
done
}
ergodic"/home/cnbubble"
cnbubble@~/test:$a=`awk'BEGIN{sum=0}{sum=sum+NF}END{printsum}'rr.sh`
cnbubble@~/test:$echo$a
30

上面例子中統計了rr.sh文件每行的欄位(默認空格分割)數量,進行了累加求和。最後賦值給了Shell中的變數a

一般shell使用awk的結果通常是 將awk語句用 ` …… `括起來(鍵盤上Tab上面的那個鍵)

其他例子:

ls `awk……`

grep `awk……` fileName

㈦ java調用shell腳本,並得到shell腳本的返回值

文件名確實不對
.sh文件才是linux下的批處理文件,它不認bat的
另外要保證.sh中調用的其他函數在當前目錄下能正常運行

熱點內容
安卓和ios步數哪個准確 發布:2025-01-24 13:12:13 瀏覽:289
怎麼給電腦換配置 發布:2025-01-24 13:04:04 瀏覽:919
如何修改服務密碼10086 發布:2025-01-24 12:44:27 瀏覽:512
dosftp連接 發布:2025-01-24 12:35:56 瀏覽:802
編程來炒股 發布:2025-01-24 12:35:14 瀏覽:854
python正則中括弧 發布:2025-01-24 12:32:08 瀏覽:584
配置排列用英語怎麼說 發布:2025-01-24 12:32:00 瀏覽:607
led流水燈c語言程序 發布:2025-01-24 12:28:15 瀏覽:46
蘋果平板鎖屏密碼在哪裡 發布:2025-01-24 12:16:41 瀏覽:958
網校c語言 發布:2025-01-24 12:12:15 瀏覽:787