1. 程式人生 > >指令碼除錯sh -x xx.sh、set -x

指令碼除錯sh -x xx.sh、set -x

目錄

一.簡介
二.sh -x 指令碼名.sh
三.set -x

一.簡介

使用sh -x除錯shell指令碼
“-x”選項可用來跟蹤指令碼的執行,是除錯shell指令碼的強有力工具。“-x”選項使shell在執行指令碼的過程中把它實際執行的每一個命令列顯示出來,並且在行首顯示一個”+”號。 “+”號後面顯示的是經過了變數替換之後的命令列的內容,有助於分析實際執行的是什麼命令。 “-x”選項使用起來簡單方便,可以輕鬆對付大多數的shell除錯任務,應把其當作首選的除錯手段。
shell的執行選項除了可以在啟動shell時指定外,亦可在指令碼中用set命令來指定。 “set -引數”表示啟用某選項,”set +引數”表示關閉某選項。有時候我們並不需要在啟動時用”-x”選項來跟蹤所有的命令列,這時我們可以在指令碼中使用set命令,如以下指令碼片段所示:

set -x    #啟動"-x"選項 要跟蹤的程式段 
set +x     #關閉"-x"選項

二.sh -x 指令碼名.sh

[[email protected] all]# cat 2018070401.sh
#!/bin/bash
var=$1
echo $var
[[email protected] all]# sh -x 2018070401.sh hello
#控制檯輸出
+ var=hello
+ echo hello
hello  
 #帶+的表示被跟蹤的程式碼

三.set -x

對指令碼內部部分程式碼進行跟蹤,被跟蹤的程式碼以set -x開始,與set +x結束

[[email protected] shellexer]# cat 2018070401.sh
#!/bin/bash
var=$1
set -x
eeco $var
set +x
echo $var
[[email protected] all]# sh 2018070401.sh hello
#控制檯輸出
+ eeco hello
2018070401.sh: line 4: eeco: command not found
+ set +x
hello

相關推薦

指令碼除錯sh -x xx.shset -x

目錄 一.簡介 二.sh -x 指令碼名.sh 三.set -x 一.簡介 使用sh -x除錯shell指令碼 “-x”選項可用來跟蹤指令碼的執行,是除錯shell指令碼的強

指令碼除錯_sh -x set -x

sh -x 指令碼名.sh 對整個指令碼進行跟蹤 [[email protected] shellexer]# cat bash.sh #!/bin/bashvar=$1echo $

bash xx.shsh xx.sh以及./xx.sh的區別

在ubuntu中,sh只是bash的一個連結,執行的程式都是一樣的,命令直譯器是一樣的。但bash xx.sh和./xx.sh和sh xx.sh還是有不同的,bash xx.sh和sh xxx.sh都已經是直接執行命令,指令碼程式作為這個命令的引數,不存在可行性許可權的問題

chmod u+x file.sh這句中chmodux分別代表什麼呢

chmod是許可權管理命令change the permissions mode of a file的縮寫。。 u代表所有者,x代表執行許可權。 + 表示增加許可權。 chmod u+x file.sh 就表示對當前目錄下的file.sh檔案的所有者增加可執行許可權。。。

SpringBoot2.x應用啟動關閉shell指令碼

本篇主要說明以下內容: 1.SpringBoot2.x應用啟動、關閉的shell指令碼 1 啟動指令碼 直接放到同jar包同一個目錄下,如下: #!/usr/bin/env bash APPLICATION_NAME='spblearn' CURRENT_PATH=`pwd` PID=""

bash: ./xxxx.sh: line xx: syntax error near unexpected token "xx''

今天在編譯android openssl的時候使用指令碼檔案出現了下面的錯誤: [email protected]:~/AndroidBox/openssl-1.1.0f$ source ./setenv-android.sh : command not fou

Ret2Libc(2) (有system無‘/bin/sh’)繞過NXASLR

和Ret2Libc(1)一樣,先把程式扔進IDA看看程式碼    和Ret2Libc(1)一樣,gets存在溢位漏洞 gdb-peda$ checksec CANARY    : disabled FORTIFY   : disabled

Ret2Libc(1) (有system/bin/sh)繞過NXASLR

Ret2Libc即控制程式執行libc庫中的函式。 通常是返回到某個函式的plt處,或者函式執行時候的實際地址。 下面是一個例子: 可以看出程式gets有一個明顯的溢位漏洞 gdb-peda$ checksec CANARY    : disabled FO

shell指令碼配置環境變數時 source XXX.sh與 ./XXX.sh的區別

配置當前終端的環境變數,寫一個指令碼來執行,但./XXX.sh的時候,腳本里面列印PATH是改了,但是在終端echo $PATH卻沒有看到變化,因為這樣執行等於說不在當前程序 換source XXX.sh或. XXX.

shell指令碼除錯中開啟set選項

 設定除錯選項概覽 短符號 長符號 結果 set -f set -o noglob 禁止特殊字元用於檔名擴充套件。 set -v set -o verbose 列印讀入shell的輸入行。 set -x set -o xtrace 執行命令之前列

linux,shell指令碼set -x的意思

set -x a=10 命令執行結果: + a=10 echo $a + echo 10 10 set指令能設定所使用shell的執行方式,可依照不同的需求來做設定 -a  標示已修改的變數,以供輸

Grid軟體安裝過程中orainstRoot.sh和root.sh指令碼到底做了什麼?

在Linux平臺上,從Oracle 11gR2開始,不論是單例項的庫,還是RAC庫,如果需要用到ASM時,通常都需要單獨安裝Grid Infrastructure軟體。而在Linux平臺上以圖形介面【OUI Oracle Universal Installer】安裝Oracle 11gR2 Grid軟體過程

envsetup.sh與mm命令mmm命令說明

在Android SDK原始碼工程下,如果編譯整個工程可能需要兩三個小時,即使二次編譯也要二十多分鐘。如果只想單獨編譯某個APK應用,那麼可以這樣做: 1)在build目錄下執行    . envsetup.sh  (注意,命令前面有一個點,然後接一個“空格”鍵)

Spring中使用MapSetList數組屬性集合的註入方法配置文件

查看 main list highlight 配置 spring配置 pla lec while (1)下邊的一個Java類包含了所有Map、Set、List、數組、屬性集合等這些容器,主要用於演示spring的註入配置; [java] view plain c

ListSetMap下各類型的對比

hashtable class ray hashmap 速查 使用 線程同步 highlight ash 1.List和Set: List: 元素有放入順序,元素可重復,查找效率高,插入刪除效率低; Set: 元素無放入順序,元素不可重復,(元素雖然無順序,但元素在Set

51Nod 1515(並查集set離散化)

() space 並查集 conn com i++ include int esp //代碼還是YY學姐幫改的,自己從來沒有真正A過幾道題,不是看題解就是有BUG找不出,多久了還是改變不了這樣的現狀,或許ACM就是這麽篩選人的吧。從5.24到11.24,再到又一年的5.24

MapSetList集合差別及聯系詳解

特性 互轉 字母順序 時也 參數 很慢 未定義 諸多 cto 提到集合之前,先說說數組Array和集合的區別:   (1)數組是大小固定的,並且同一個數組只能存放類型一樣的數據(基本類型/引用類型)   (2)JAVA集合可以存儲和操作數目不固定的一組數據。    (

leetcode || 50Pow(x, n)

example 移位 pop start 討論 adding n) 例如 code problem: Implement pow(x, n). Hide Tags Math Binary Search 題意:求x的n次冪

ListSetMap集合大雜燴

鏈接 collect hid 鍵值 oar text 同步 二分 實現 java集合主要分三種:list、set、map;當中list和set都繼承自Collection接口,兩者最大差別是set不能包括反復元素 list的經常使用實現類有: Ar

ListMapset的加載因子,默認初始容量和擴容增量

nbsp 同步 ble 分配 eat 提高 調用 width 可見 首先,這三個概念說下。初始大小,就是創建時可容納的默認元素個數;加載因子,表示某個閥值,用0~1之間的小數來表示,當已有元素占比達到這個閥值後,底層將進行擴容操作;擴容方式,即指定每次擴容後的大小的規則,比