Linux Shell之输出

最近在看linux shell脚本相关的英文资料,一时手痒,分享一下书籍的翻译版
一、在终端输出信息

1、一个典型的shell脚本文件开始格式为:

#!/bin/bash

2、运行
"#"字符用来注释从它到它所在行末尾信息
1)运行shell脚本一共有两种方法,通过sh命令运行

$ sh script.sh #如果脚本在当前文件夹
或者
$ sh /home/path/script.sh #使用全路径

2)给所有人加上可执行权限

$ chmod a+x script.sh

脚本可通过以下方式执行:

$ ./script.sh # ./代表当前文件夹
#或者
$ /home/path/script.sh #全路径

shell程序会先读取shell文件的首行,判断是否以#!/bin/bash开头来决定是否为shell文件。shell文件会通过/bin/bash验证以及执行内部脚本如下:

$ /bin/bash script.sh

在bash里,每一条指令都会被分号或者新的行分割

$ cmd1 ; cmd2

相当于

$ cmd1
$ cmd2

3)终端输出命令echo
a、我们可以不用双引号使用echo命令输出字符串,但我们不能使用分号用来分割命令
b、echo hello; hello :表示两条命令,一条为echo hell 一条为hello
c、当我们用单引号使用echo命令输出字符串,例如,$var不会被赋值

$ echo '$var' #将会返回$var

不使用单引号

$ echo $var #将会输出$var变量的值,若他没有定义,则什么也不输出

举例:

$ echo "Welcome to Bash"
Welcome to Bash

若没有双引号,它也会正常输出

$ echo Welcome to Bash
Welcome to Bash

使用单引号也可以正常输出

$ echo 'text in quote'

若在打印字符串用双引号包含,且字符串中包含“!”字符,需使用“\”前缀装饰

$ echo Hello Wrold !
$ echo 'Hello World !'
$ echo "Hello World \!" 

4)另一种中断输出命令printf
与c语言的使用方式相同,例如

$ pritnf "Hello world"

printf接收由空格分割的带引号的字符串。我们可以使用格式化字符,我们也可以明确字符串长度,左对齐或右对齐等。默认情况下,printf不会像echo一样在新的一行输出结果。如果需要,我们可以明确在新的一行输出结果。就想以下脚本一样:

#!/bin/bash
#Filename: 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

我们会得到以下结果:

No	Name		Mark
1		Sarath		80.35
2		James		91.00
3		Jeff			77.56

%s,%c,%d和%f都是替换字符,可以双引号后面的字符串填充
%-5s描述一个字符串用左对齐方式(- 代表左对齐)以及字符串的宽度为5个字符。如果没有明确“-”字符,字符串将会以右对齐的方式输出。明确的宽度字符,在变量长度不满10个字符时,会通过空格填满10个字符。
float型字符串,我们可以对传入的参数进行四舍五入计算。%-4.2f,中的.2表示保留两位小数。\n表示换行命令
默认情况下,echo会自动在输出结果追加新行。这个也可用通过使用-n标志避免。对于通过双引号括起来的字符串echo命令也可以使用转移字符。关于使用转移序列,使用echo相当于使用echo -e “string containing escape sequences”,例如

echo -e "1\t2\t3"
123

5)带颜色的输出
我们可以通过使用转义码进行带颜色的输出。
颜色码被用来体现每一种颜色。例如:reset=0,black=30,red=31,green=32,yellow=33,blue=34,magenta=35,cyan=36,and white=37.
按以下输入,会输出带颜色的字体

echo -e "\e[1;31m This is red text \e[0m"

在这里\e[1;31m 是设置字符为红色字体的转义字符串,\e[0m是设置颜色的截止位置。
可以用任意颜色码代替31
关于常用的背景色,reset=0,black=40,red=41,yellow=43,blue=44,magenta=45,cyan=46,and white=47;
按一下输入,会输出带背景色的输出。

echo -e "\e[1;42m Green Background \e[0m"

猜你喜欢

转载自blog.csdn.net/qq_32403063/article/details/89356515