题主你好,
先讲个题外话, 我们在执行脚本时, 有些命令是在当前shell中被执行的, 有些命令需要fork()当前shell得到一个子shell,然后在子shell中执行相应的命令.
回到正题, 在对shell脚本调试时, 每条被跟踪执行的语句前面都至少有一个+, 你可以理解为, 如果在语句前只看到了1个" + "号, 表示该条语句是在你执行脚本的那个shell中被运行的如果你在语句前看到了2个" + "号, 则表示,该条语句是从你运行脚本的shell中fork()得到一个新的子shell,然后在这个子shell中运行的当然这个" + "号的数量不只2个, 理论上可以有无数个, 下面给你举个前面有3个" + "号的例子:
上面语句, 从左到右的echo分别在当前shell中执行, 子shell中执行,孙shell中执行
写在最后: " + "号其实读取的是linux中变量PS4的值:
所以我们可以自己改变变量PS4的值, 然后去调试shell脚本,就会看到每个被追踪语句的开头显示的都是我们自定义的符号了:
可以看到, 除了我们设置变量PS4的语句使用的是系统默认的PS4变量值" + ", 之后被追踪执行的语句开头已经变成了我们自定义的符号" 6 "了.
希望可以帮到题主, 欢迎追问.
linxu下�.shå½ä»¤ç¸å½äºæ¯shellå½ä»¤è¯è¨ç解éå¨ãä¸é¢ç±æ为大家æ´çäºlinuxçshå½ä»¤ç详ç»è§£éçç¸å ³ç¥è¯ï¼å¸æ对大家æ帮å©!
ä¸ãLinuxä¸çshå½ä»¤ç详ç»è§£é
shå½ä»¤æ¯shellå½ä»¤è¯è¨è§£éå¨ï¼æ§è¡å½ä»¤ä»æ åè¾å ¥è¯»åæä»ä¸ä¸ªæ件ä¸è¯»åãéè¿ç¨æ·è¾å ¥å½ä»¤ï¼åå æ ¸è¿è¡æ²é!Bourne Again Shell (å³bash)æ¯èªç±è½¯ä»¶åºéä¼(GNU)å¼åçä¸ä¸ªShellï¼å®æ¯Linuxç³»ç»ä¸ä¸ä¸ªé»è®¤çShellãBashä¸ä½ä¸Bourne Shellå ¼å®¹ï¼è¿ç»§æ¿äºC ShellãKorn Shellçä¼ç¹ã
è¯æ³
bash [options] [file]
é项
-c stringï¼å½ä»¤ä»-cåçå符串读åã
-iï¼å®ç°èæ¬äº¤äºã
-nï¼è¿è¡shellèæ¬çè¯æ³æ£æ¥ã
-xï¼å®ç°shellèæ¬éæ¡è¯å¥çè·è¸ªã
äºãLinuxä¸çshå½ä»¤çå ·ä½ä¾å
使ç¨-xé项è·è¸ªèæ¬è°è¯shellèæ¬ï¼è½æå°åºææ§è¡çæ¯ä¸è¡å½ä»¤ä»¥åå½åç¶æï¼
[root@AY1307311912260196fcZ satools]# sh -x check_ssh_login.sh
+ DEFINE=30
+ cat /var/log/secure
+ awk '/Failed/ {++ip[$(NF-3)]} END {for (i in ip) print i"="ip[i]}'
++ cat /root/satools/black.txt
+ for i in '`cat /root/satools/black.txt`'
++ echo 121.42.0.16=1427
++ awk -F= '{print $1}' + IP=121.42.0.16
++ echo 121.42.0.16=1427
++ awk -F= '{print $2}'
+ NUM=1427
+ '[' 1427 -gt 30 ']'
+ grep 121.42.0.16 /etc/hosts.deny
+ '[' 1 -gt 0 ']'
+ echo sshd:121.42.0.16
+ echo vsftpd:121.42.0.16
+ for i in '`cat /root/satools/black.txt`'
++ echo 121.42.0.72=276
++ awk -F= '{print $1}'
+ IP=121.42.0.72
++ awk -F= '{print $2}'
++ echo 121.42.0.72=276
+ NUM=276 + '[' 276 -gt 30 ']'
+ grep 121.42.0.72 /etc/hosts.deny
+ '[' 1 -gt 0 ']'
+ echo sshd:121.42.0.72
+ echo vsftpd:121.42.0.72
ä¸ãLinuxä¸å¯¹.shæ件çæä½å½ä»¤
1ãå建test.shæ件
touch test.sh
2ãç¼è¾shæ件
vi test.sh
3ãä¿åéåº
æ²å»escï¼ ç¶åè¾å ¥ :wq ï¼å车éåº
4ãæ·»å å¯æ§è¡æéï¼å½ç¶é»è®¤å°±æ¯å¯æ§è¡çã
chmod +x test.sh
5ãè¿è¡æ件
(1)./test.sh
(2)sh test.sh
6ãå é¤æ件
rm test.sh
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)