linux shell 脚本编写好要通过漫长的调试阶段,能够使用sh -x 执行。可是这种状况在远程调用脚本的时候,就有诸多不便。又想知道脚本内部执行的变量的值或执行结果,这个时候能够使用在脚本内部用 set -x 。linux
set去追踪一段代码的显示状况,执行后在整个脚本有效shell
set -x 开启 bash
set +x关闭spa
set -o 查看debug
例子:调试
sxj@sxj-PC MINGW64 /d/mSysGit_workspace/linux shell script/3760_01_code
$ cat de.sh
#!/bin/bash
#Filename: debug.sh
for i in {1..6};
do
set -x
echo $i;
echo "#$i test done!";
set +x
done
echo "Script executed"
sxj@sxj-PC MINGW64 /d/mSysGit_workspace/linux shell script/3760_01_code
$ sh de.sh
+ echo 1
1
+ echo '#1 test done!'
#1 test done!
+ set +x
+ echo 2
2
+ echo '#2 test done!'
#2 test done!
+ set +x
+ echo 3
3
+ echo '#3 test done!'
#3 test done!
+ set +x
+ echo 4
4
+ echo '#4 test done!'
#4 test done!
+ set +x
+ echo 5
5
+ echo '#5 test done!'
#5 test done!
+ set +x
+ echo 6
6
+ echo '#6 test done!'
#6 test done!
+ set +x
Script executed
code
能够看到,针对每一条每一条命令,都会先跟踪一遍,就是显示一遍,而后执行一遍;htm
stty [ -a ] [ -g ] [ Options ] stty(set tty)命令用于显示和修改当前注册的终端的属性。ip
UNIX系统为键盘的输入和终端的输出提供了重要的控制手段,能够经过stty命令对特定终端或通讯线路设置选项。 在stty中相应选项前冠以负号(-),该选项被清除;若是无负号,该选项被设置。get
stty -a #将全部选项设置的当前状态写到标准输出中
old_stty_settings=`stty -g` #保存当前设置
stty "$old_stty_settings" #恢复当前设置
stty -echo #禁止回显,当您在键盘上输入时,并不出如今屏幕上
stty echo #打开回显
stty raw #设置原始输入
stty -raw #关闭原始输入
stty igncr #开启忽略回车符
stty -igncr#关闭忽略回车符
通常,在让用户输入密码的时候确定是要关闭回显的,若是不关闭就是明文输入了。因此stty -echo 功能的主要用途就是密码输入时的交互场景。输完密码以后,再使用stty echo打开回显。
例子:
sxj@sxj-PC MINGW64 /d/mSysGit_workspace/linux shell script/3760_01_code $ cat password.sh #!/bin/sh #Filename: password.sh echo -n "Enter password:" stty -echo read password stty echo echo echo Password read. echo Password is : $password sxj@sxj-PC MINGW64 /d/mSysGit_workspace/linux shell script/3760_01_code $ sh password.sh Enter password: Password read. Password is : 1234R sxj@sxj-PC MINGW64 /d/mSysGit_workspace/linux shell script/3760_01_code $