bash 執行後 如何關閉 [論壇 - 新手村]


正在瀏覽:   1 名遊客


 到底部   前一個主題   下一個主題  [無發表權] 請登錄或者註冊



bash 執行後 如何關閉
會員一級
註冊日期:
3/31 11:10:21
所屬群組:
已註冊使用者
等級: 1
HP : 0 / 21
MP : 3 / 40
EXP: 86
離線
如題

我有個test.sh檔

內容大概如下

#!/bin/bash
IDnumber=../../R123456789
cd $IDnumber
gitbook pdf
if [ $? -eq 0 ];then echo success; else echo fail; fi
exit

第1 2 3行就不解釋了

第4行是一個產生gitbook PDF檔的指令

第5行是判斷第4行執行完後
若成功則印出success;反之印出fail

第6行是指test.sh執行完後關閉

我問題在第6行

如果我直接在終端機上輸入exit執行
會關閉終端機

而我要的正是這種效果..

但是寫在sh檔裡執行
卻不會關閉

該怎麼做呢?

3/31 11:21:42
應用擴展 工具箱
回覆: bash 執行後 如何關閉
會員二級
註冊日期:
2016/4/18 12:29
所屬群組:
已註冊使用者
等級: 7
HP : 0 / 158
MP : 23 / 735
EXP: 34
離線
沒用過gitbook pdf
你確定4、5行正確?
你試試exit 0

3/31 11:28:49
應用擴展 工具箱
回覆: bash 執行後 如何關閉
會員一級
註冊日期:
3/31 11:10:21
所屬群組:
已註冊使用者
等級: 1
HP : 0 / 21
MP : 3 / 40
EXP: 86
離線
百分之百確定執行沒問題
因為有印出success

您可以把gitbook pdf
換成其他您知道的指令
(例如ls或是find這類需要執行時間去run的指令)

另外..
我試過exit 0了
沒有反應~

3/31 11:37:47
應用擴展 工具箱
回覆: bash 執行後 如何關閉
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 33
HP : 160 / 803
MP : 504 / 13098
EXP: 15
在線
執行 shell script,是開了一個新的 shell 來執行。

所以在 shell script 裡面執行 exit ,

只是離開 shell script,也就是離開執行的 shell。

並不會關閉目前的 Terminal。

至於執行完 shell script,要怎麼關閉 Terminal,我也不曉得 :p


另外有聯想到「Desktop Entry Specification」。

還有想到一個就是 kill 目前執行的 terminal 的 process

http://linux.vbird.org/linux_basic/0440processcontrol.php#process_2

不過我也不確定細節要怎實做,以前沒去嘗試過

以上參考,

先來去吃飯


3/31 11:58:46
應用擴展 工具箱
回覆: bash 執行後 如何關閉 terminal
會員五級
註冊日期:
2012/4/22 10:50
所屬群組:
已註冊使用者
等級: 33
HP : 160 / 803
MP : 504 / 13098
EXP: 15
在線
突然想到,不然就是指令這樣下,也可以離開Terminal。



./test.sh && exit



註:上面主要會離開Terminal目前執行的shell,若您原本有額外再執行shell,
也就是您開啟了一個「Terminal」,概念上會先執行一個「Shell (bash or zsh or fish or ..)」,
然後你下指令,再執行一次「bash」,
上面指令「./test.sh && exit」只會離開這一層,這樣就不會離開Terminal,因為還有一層。
要離開「Terminal」,需要關掉最上層那個「shell」,也就是「Terminal」一開始開啟的那個「shell」。




以下是參考的test.sh


#!/usr/bin/env bash

exit 0 # 成功





或是 test.sh


#!/usr/bin/env bash

IDnumber=../../R123456789
cd $IDnumber

gitbook pdf

if [ $? -eq 0 ]; then
        echo success
        exit 0
else
        echo fail
        exit 1
fi





或是 test.sh


#!/usr/bin/env bash

IDnumber=../../R123456789
cd $IDnumber

gitbook pdf ## 離開後的 $? 會是 gitbook 執行完的 「exit status」,也就是最後一個指令或function的「exit status」。





===============================================

a.sh


#!/usr/bin/env bash
true




b.sh


#!/usr/bin/env bash

false



執行


$ ./a.sh
$ echo $?



顯示


0



執行


$ ./b.sh
$ echo $?



顯示


1





關於「true」或「false」的用法,
在「bash」可以執行「$ help true」和「$ help false」來觀看使用說明。

===============================================

此篇連結,一併紀錄到這個「索引」。



3/31 12:06:33
應用擴展 工具箱
回覆: bash 執行後 如何關閉
會員一級
註冊日期:
3/31 11:10:21
所屬群組:
已註冊使用者
等級: 1
HP : 0 / 21
MP : 3 / 40
EXP: 86
離線
謝謝

3/31 13:06:48
應用擴展 工具箱


 [無發表權] 請登錄或者註冊


可以查看帖子.
不可發帖.
不可回覆.
不可編輯自己的帖子.
不可刪除自己的帖子.
不可發起投票調查.
不可在投票調查中投票.
不可上傳附件.
不可不經審核直接發帖.