Shell之终端输入输出&&调试脚本 您所在的位置:网站首页 linux脚本获取输入参数错误 Shell之终端输入输出&&调试脚本

Shell之终端输入输出&&调试脚本

2023-09-29 21:30| 来源: 网络整理| 查看: 265

文章目录 三种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/ocean

echo中如果想要"包含转义序列的字符串",使用echo -e

$ echo -e "1\t2\t3" 1 2 3

echo -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 实验室设备网 版权所有