set -x 與 set +x
在liunx腳本中可用set -x就可有詳細(xì)的日志輸出.免的老是要echo了
下面的網(wǎng)上搜來(lái)的用法.
用于腳本調(diào)試株婴。set是把它下面的命令打印到屏幕
set -x 是開(kāi)啟 set +x是關(guān)閉 set -o是查看 (xtrace)吟宦,set去追中一段代碼的顯示情況辐真。
執(zhí)行set -x后,對(duì)整個(gè)腳本有效羊初。
[root@mybox bin]# ls -l /bin/bash
+ ls --color=tty -l /bin/bash?
-rwxr-xr-x 1 root root 722684 Jul 12? 2006 /bin/bash
針對(duì)一部分script刻撒,可以選擇 set -x 和 set +x配套使用。比如在一個(gè)腳本里:
set -x??????????? # activate debugging from here
w
set +x??????????? # stop debugging from here
---------------------------------------------------------------------------------------------
set指令能設(shè)置所使用shell的執(zhí)行方式重贺,可依照不同的需求來(lái)做設(shè)置
-a 標(biāo)示已修改的變量骑祟,以供輸出至環(huán)境變量回懦。?
-b 使被中止的后臺(tái)程序立刻回報(bào)執(zhí)行狀態(tài)。?
-C 轉(zhuǎn)向所產(chǎn)生的文件無(wú)法覆蓋已存在的文件次企。?
-d Shell預(yù)設(shè)會(huì)用雜湊表記憶使用過(guò)的指令怯晕,以加速指令的執(zhí)行。使用-d參數(shù)可取消缸棵。?
-e 若指令傳回值不等于0舟茶,則立即退出shell。?
-f 取消使用通配符堵第。?
-h 自動(dòng)記錄函數(shù)的所在位置吧凉。?
-H Shell 可利用"!"加<指令編號(hào)>的方式來(lái)執(zhí)行history中記錄的指令。?
-k 指令所給的參數(shù)都會(huì)被視為此指令的環(huán)境變量踏志。?
-l 記錄for循環(huán)的變量名稱(chēng)阀捅。?
-m 使用監(jiān)視模式。?
-n 只讀取指令针余,而不實(shí)際執(zhí)行饲鄙。?
-p 啟動(dòng)優(yōu)先順序模式。?
-P 啟動(dòng)-P參數(shù)后圆雁,執(zhí)行指令時(shí)忍级,會(huì)以實(shí)際的文件或目錄來(lái)取代符號(hào)連接。?
-t 執(zhí)行完隨后的指令伪朽,即退出shell颤练。?
-u 當(dāng)執(zhí)行時(shí)使用到未定義過(guò)的變量,則顯示錯(cuò)誤信息驱负。?
-v 顯示shell所讀取的輸入值嗦玖。?
-x 執(zhí)行指令后,會(huì)先顯示該指令及所下的參數(shù)跃脊。?
+<參數(shù)> 取消某個(gè)set曾啟動(dòng)的參數(shù)宇挫。
linux shell 腳本編寫(xiě)好要經(jīng)過(guò)漫長(zhǎng)的調(diào)試階段,可以使用sh -x 執(zhí)行酪术。但是這種情況在遠(yuǎn)程調(diào)用腳本的時(shí)候器瘪,就有諸多不便。
又想知道腳本內(nèi)部執(zhí)行的變量的值或執(zhí)行結(jié)果绘雁,這個(gè)時(shí)候可以使用在腳本內(nèi)部用 set -x 橡疼。
set去追蹤一段代碼的顯示情況,執(zhí)行后在整個(gè)腳本有效
set -x 開(kāi)啟
set +x關(guān)閉
set -o 查看