Shell脚本通常是一个以#!开始的文本文件,在Bash中,每个命令或是命令序列是通过使用分号或换行符来分隔的。字符#指明注释的开始。注释部分以#为起始,一直延续到行尾。
1.终端打印
1.1.1 echo
echo是用于终端打印的基本命令,在默认情况下,echo在每次调用后会添加一个换行符。
$ echo "Hello World"
Hello World
可以使用-n来忽略结尾的换行符
$ echo -n "Hello World"
Hello Worldbrian@ubuntu:~$
echo同样接受双引号字符串内转义序列(escape sequence)作为参数, 如果需要使用转义序列,则采用echo -e
$ echo -e "1\t2\t3"
1 2 3
打印彩色输出
在终端可以打印彩色输出,我们可以使用转义序列来实现
每种颜色都有对应的颜色码。比如:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37
要打印彩色文本,可以输入如下命令
echo -e "\e[1; 31m This is red text \e[0m"
$ echo -e "\e[1;31m This is red text \e[0m"
This is red text
\e[1;31m将颜色设置为红色,\e[0m将颜色重新置回。设置其他颜色只需要替换颜色码就OK啦
如果把\e[1;31m中的1;去掉将会发生什么情况?
echo -e "\e[31m This is red text \e[0m"
This is red text
看到变化了吗?字体变得纤细而且暗淡,但颜色不变。
要设置彩色背景,经常使用的颜色码是:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47
打印彩色背景,可以输入如下命令:
echo -e "\e[1;42m Green Background \e[0m"
$ echo -e "\e[1;42m Green background \e[0m"
Green background
去掉\e[1;42m中的1;后,字体纤细而且暗淡,但背景色不变。
$ echo -e "\e[42m Green background \e[0m"
Green background
1.1.2 printf
在默认情况下,printf并不会像echo那样自动添加换行符,我们必须在需要的时候手动添加。另外,printf还可以指定字符串的宽度,左右对齐方式等。
如下脚本内容:
#!/bin/bash
#文件名称printf.sh
printf "%-5s %-10s %-4s\n" No Name Mark
printf "%-5s %-10s %-4.2f\n" 1 Sarach 80.3456
我们会得到如下格式化的输出:
$ ./printf.sh
No Name Mark
1 Sarach 80.35
符号“-”表示左对齐。
1.1.3 变量的取用
用echo就可以读出变量,只是需要在变量名称前加$符号,或者是以 ${发量} 的方式取用都可以!
ex:echo $PATH 或者 echo ${PATH}