1樓:
不太明白你表達的意思,是無法看到錯誤資訊還是想儲存錯誤資訊?
1、一般來講,shell命令都是有錯誤輸出的,它會列印在螢幕上,但實際上是標準錯誤輸出檔案,如果我不想輸出到螢幕,而是寫到檔案裡,我們可以用管道符'>'重定向標準錯誤輸出,比如:
我cat一個不存在的檔案,會有錯誤輸出,我可以把錯誤重定向到檔案裡
#cat /tmp/aa
cat: /tmp/aa: no such file or directory
#cat /tmp/aa 2>err.log
#cat err.log
cat: /tmp/aa: no such file or directory
2表示標準錯誤輸出。
另外,我甚至可以把錯誤輸出放到shell變數裡:
#aa=$(cat /tmp/aa 2>&1)
#echo $aa
cat: /tmp/aa: no such file or directory
2>&1表示,我把錯誤輸出重定向到標準螢幕輸出1上,在賦值給變數aa
2、關於如何除錯shell指令碼
很簡單#sh -vx ***x.sh
上述命令會列印shell指令碼的執行過程和結果,有助於排錯。當然,某些情況下,可能不會有輸出(如shell中有函式,可能就不會輸出函式裡的過程)。
2樓:go天馬行空
var=`ps -ef | grep oracle` 或者 var=$(ps -ef | grep oracle) 獲取系統中關於oracle的程序的資訊。
3樓:電腦老手
echo "errormsg" > &2; 標準錯誤
echo "infomsg" > &1; 標準輸出
如何在shell指令碼中,判斷一個基本命令執行是否成功
4樓:海天盛
1.連線到相應的linux主機,進入linux命令列狀態,等待shell命令的輸入。
2.在linux命令列下,輸入shell命令:telnet192.168.120.209。
3.最後,按下回車鍵執行shell指令,此時會看到telnet並沒有連線成功。
注意事項
附件:linux系統外殼原理
作為作業系統的外殼,linux系統的外殼為使用者提供了使用作業系統的介面。它是命令語言、命令直譯器和程式語言的統稱。
shell是使用者和linux核心之間的介面。如果您將linux核心看作是球體的中心,那麼shell就是核心周圍的外層。當從shell或其他程式中進行指示時
當linux傳遞一個命令時,核心會相應地做出響應。shell是一個命令語言直譯器,它有自己的一組內建的shell命令,可以被系統的其他部分使用
由程式呼叫。使用者在提示符處輸入的命令由shell解釋並傳遞給linux核心。
擴充套件資料:
變數傳遞執行結果
1.shell通常放在/bin或/user/bin目錄中。我們可以使用cat/etc/shell命令檢視當前linux系統上可用的shell。
2.使用echo$shell命令檢視當前系統的預設shell並輸出shell的環境變數。
3.shell中的echo命令用於輸出字串。我們將需要輸出的字串用雙引號括起來。
4.第一層的命令用ps1,第二層的命令用ps2, >是第二層的命令,如我們輸入的命令沒有結束的情況,顯示的是第二層的命令。
5.我們使用echo$ps1和echo$ps2來檢視提示符的當前格式,同樣我們也可以修改命令提示符。
6.已經建立了一個shell指令碼,使用vitest(自定義指令碼名)進入指令碼編輯頁面,test是指令碼的名稱,字尾是.sh。
5樓:乙飛桖
舉個例子,執行一條基本語句建立一個檔案
#!/bin/bash
touch test.txt
if [ $? -eq 0 ]
then
echo "執行成功"
else
echo "執行失敗"
fi$?可以判斷上一條命令是否成功,成功為0,不成功為非0
6樓:春羨利
true && echo success || echo fail
false && echo success || echo fail
7樓:匿名使用者
echo $?
一般返回0就是成功
c/c++如何在**中獲取shell命令的輸出
8樓:
在windows下面這個的確是需要用管道來實現的
#include
#include
bool excudecmd(char *szoutputbuf,char *szcmdline)
security_attributes sa;
handle hread,hwrite;
sa.nlength = sizeof(security_attributes);
sa.lpsecuritydescriptor = null;
sa.binherithandle = true; //輸出重定向
printf("建立匿名管道失敗");
return false;
startupinfo si;
process_information pi;
si.cb = sizeof(startupinfo);
si.hstdinput=hread;
si.hstderror = getstdhandle(std_error_handle); //把建立程序的標準錯誤輸出重定向到管道輸入
si.hstdoutput = hwrite; //把建立程序的標準輸出重定向到管道輸入
si.wshowwindow = sw_hide;
si.dwflags =startf_usestdhandles | startf_useshowwindow;
closehandle(hwrite);
closehandle(hread);
printf("建立子程序失敗");
return false;
else
closehandle(pi.hprocess);
closehandle(pi.hthread);
dword bytesread;
printf("讀資料失敗");
return false;
closehandle(hread);
return true;
int main()
char cmdline="cmd.exe /c echo 回顯的資訊",buf[1000];
zeromemory(buf,100);
excudecmd(buf,cmdline);
printf(buf);//buf就是你想要的東西
linux下面就不清楚了
9樓:匿名使用者
您可以試下類似的**,popen 函式在 vc6 中對應的應該是 _popen ,pclose 為 _pclose
#include
#include
void executecmd(const char *cmd, char *result)
;file *ptr;
strcpy(ps, cmd);
if((ptr=popen(ps, "r"))!=null)pclose(ptr);
ptr = null;
}else
}int main()
10樓:尋黑口罩女孩
popen,可以執行一個程序,其反回一個檔案指標,就可以讀取程序執行的結果!
#include
#include
#include
int main()
11樓:匿名使用者
示意流程如下:
return_code = system("shell command") ;
if (return_code == 1)do something ;
else if (return_code == 2)do something ;
else
do something ;
12樓:
windows環境可以用管道
如何在shell指令碼中執行cd命令
在工作中,網際網路公司,經常不是直接登入到服務上,而是通過跳板機進行中轉。這樣就會用到cd命令切換目錄。編輯shell檔案 vim switchdir.sh plain view plain copycd opt service mobile kafka 2.10 0.8.1 lizt bin so...
bash shell如何獲取到命令執行結果的值
將一條命令的執行結果取得命令執行結果的值有 1 使用反引號 數字鍵1左邊的鍵,tab鍵上面,英文方式輸入 如 a echo hello world 即將命令 echo hello world 的輸出賦給變數a 2 可以使用 如 a echo hello world 即將命令echo hello wo...
c語言怎麼編寫輸出數再換行輸出數字的命令
四舍 入 輸出6個數再換行即輸出時每行6個數,可以採用迴圈來實現該效果。int a 100 int i for i 0 i 100 i printf d,a i if i 6 5 printf n 因為i是從0開始計數,所以每次i 6為5時換行,實現每行6個效果。擴充套件資料 c語言的知識梳理總結 ...