Shell之终端输入输出&&调试脚本 | 您所在的位置:网站首页 › linux脚本获取输入参数错误 › Shell之终端输入输出&&调试脚本 |
文章目录
三种shell终端输入在终端输出echoprint
脚本调试
三种shell
登陆shell
登陆时没有图形界面,直接操作命令行的。这个我基本上不用。 交互式shell就是图形界面下开启“终端”,然后输入命令的哪个。 交互式shell启动时不会访问/etc/profile文件,它只会检查用户HOME目录中的.bashrc文件。 脚本shell 终端输入 $ read -- Enter作为结束符 123456从输入中读取n个字符并存入变量 $ read -n 2 var 12$ echo $var 12用无回显的方式读取密码: $ read -s var $ echo $var 123456使用read显示提示信息: $ read -p "Enter input:" var Enter input:5697832 $ echo $var 5697832在给定时限内读取输入 $ read -t 2 var #在2秒内将键入的字符串读入变量var用特定的定界符作为输入行的结束 $ read -d ":" var helloi: 在终端输出 终端是什么样子的? ocean@ubuntu:~$ root@ubuntu:~#小结: (1) 终端提示符的形式有两种,如下 username@hostname$ root@hostname #$表示普通用户,#表示管理员用户root (2)尽量不要使用root权限操作,推荐平时普通用户,需要权限时sudo切换 第一个脚本 $ sudo gedit myScript.sh #!/bin/bash # shell脚本的第一行一定是#!/bin/bash,其中(#!)位于解释器路径之前;/bin/bash是Bash解释器的路径 echo "welcome to bash" 如何执行脚本(1) 脚本名作为命令行参数 $ bash myScript.sh welcome to bash $ /bin/bash myScript.sh welcome to bash echo(1)作用:终端打印,默认每次调用之后会添加一个换行符 $ echo "welcome to bash" welcome to bash $ echo 'welcome to bash' welcome to bash $ echo welcome to bash welcome to bash""shell解释器会解释特殊符号,’'原样打印 ocean@ubuntu:~$ echo '$PWD' $PWD ocean@ubuntu:~$ echo "$PWD" /home/oceanecho中如果想要"包含转义序列的字符串",使用echo -e $ echo -e "1\t2\t3" 1 2 3echo -n 禁止自动添加换行符 $ echo -n "welcom" welcomocean@ubuntu:$(2)输出彩色文本 文本颜色是由对应的色彩码来描述的。其中包括:重置=0,黑色=30,红色=31,绿色=32, 黄色=33,蓝色=34,洋红=35,青色=36,白色=37。 $ echo -e "\e[1;31m This is red text \e[0m" #其中\e[1;31m是一个转义字符串,可以将颜色设为红色,\e[0m将颜色重新置回。只需要将31替换成想要的色彩码就可以了。对于彩色背景,经常使用的颜色码是:重置=0,黑色=40,红色=41,绿色=42,黄色=43, 蓝色=44,洋红=45,青色=46,白色=47 $ echo -e "\e[1;42m Green Background \e[0m"备注:$ man console_codes查看色彩 print作用:终端以特定格式打印,默认不会自动添加换行符 #!/bin/bash #文件名: printf.sh printf "%-5s %-10s %-4s\n" No Name Mark printf "%-5s %-10s %-4.2f\n" 1 Sarath 80.3456 printf "%-5s %-10s %-4.2f\n" 2 James 90.9989 printf "%-5s %-10s %-4.2f\n" 3 Jeff 77.564执行脚本 $ sudo chmod 755 printf.sh $ ./printf.sh No Name Mark 1 Sarath 80.35 2 James 91.00 3 Jeff 77.56原理: %s、%c、%d和%f都是格式替换符(format substitution character),它们定义了该如何打印后续参数。%-5s指明了一个格式为左对齐且宽度为5的字符串替换(-表示左对齐)。如果不指明-,字符串就采用右对齐形式。宽度指定了保留给某个字符串的字符数量。如果内容不足5个字符,就以空格填充。%-4.2f 表示保留2位小数\n是换行符打印各种颜色的字体 #!/bin/bash # This script printf colors and codes printf "\e\033[4;31m 浅 色\033[0m \t\t\033[1;4;31m 深 色\033[0m\n" printf "\e[0;30;47m 黑 \e[0m 0;30m \t\e[1;30;40m 深 灰 \e[0m 1;30m\n" printf "\e[0;31;47m 红 \e[0m 0;31m \t\e[1;31;40m 深 红 \e[0m 1;31m\n" printf "\e[0;32;47m 绿 \e[0m 0;32m \t\e[1;32;40m 深 绿 \e[0m 1;32m\n" printf "\e[0;33;47m 黄 \e[0m 0;33m \t\e[1;33;40m 亮 黄 \e[0m 1;33m\n" printf "\e[0;34;47m 蓝 \e[0m 0;34m \t\e[1;34;40m 深 蓝 \e[0m 1;34m\n" printf "\e[0;35;47m 紫红 \e[0m 0;35m \t\e[1;35;40m 暗紫红 \e[0m 1;35m\n" printf "\e[0;36;47m 青 \e[0m 0;36m \t\e[1;36;40m 深 青 \e[0m 1;36m\n" printf "\e[0;37;47m 浅 灰 \e[0m 0;37m \t\e[1;37;40m 白 \e[0m 1;37m\n" 脚本调试(1) 跟踪调试命令 $ bash -x time.sh #打印出所执行的每一行命令以及当前状态-x选项会输出脚本中执行过的每一行 (2) 部分调试 #!/bin/bash #文件名: debug.sh for i in {1..6}; do set -x echo $i set +x done echo "Script executed"只会打印出echo $i的调试信息,因为使用-x和+x对调试区域进行了限制 set -x:在执行时显示参数和命令。 set +x:禁止调试。 set -v:当命令进行读取时显示输入。 set +v:禁止打印输入。 (3)自定义调试信息 #!/bin/bash function DEBUG() { [ "$_DEBUG" == "on" ] && $@ || : } for i in {1..10} do DEBUG echo "I is $i" done运行命令: $ _DEBUG=on bash script.sh可以通过定义 _DEBUG环境变量来启用或禁止调试及生成特定形式的信息:在每一条需要打印调试信息的语句前加上DEBUG 参考: |
CopyRight 2018-2019 实验室设备网 版权所有 |