Linux Shell 脚本攻略阅读笔记第1章 小试牛刀

一、简介

1.Bash(Bourne Again Shell),目前大多数GNU/Linux系统默认的shell环境。

   命令都是在shell终端中输入并执行。打开终端后,提示符的形式:username@hostname$       或    root@hostname #     ($表示普通用户,#表示管理员用户root)

2.shell脚本是一个以#!(shebang)起始的文本文件,如下:   #!/bin/bash

shebang是一个文本行,其中#!位于解释器路径之前。/bin/bash是Bash的解释器命令路径。

3.两种运行脚本的方式。

   一种是将脚本作为bash到命令行参数

buxizhizhou@ubuntu:~/lssc/chpt1$ bash test_script.sh 
hello,world
   另一种是授予脚本执行权限,将其变为可执行文件。chmod a+x script.sh

buxizhizhou@ubuntu:~/lssc/chpt1$ chmod a+x test_script.sh 
buxizhizhou@ubuntu:~/lssc/chpt1$ ./test_script.sh 
hello,world

内核会读取脚本的首行,注意到shebang为#! /bin/bash。它识别出/bin/bash,并在内部像这样执行该脚本:$  /bin/bash test_script.sh

其中,test_script.sh文件内容如下:

#!/bin/bash
echo hello,world
4.~表示主目录,通常是/home/user,其中user是用户名;若是root用户,则为/root。

5.登录shell是登录主机后获得的那个shell。如果是登录图形界面环境如GNOME、KDE后打开了一个shell,就不是登录shell。

6.Bash中,每个命令或命令序列是以分号或换行符来分隔。#指明注释的开始,延续到行尾。如 $  cmd1  ;  cmd2  等同于 $  cmd1  $  cmd2

二、终端打印

终端是交互式工具,可以通过它与shell环境进行交互。
1.echo.默认在每次调用后添加一个换行符。-n 忽略结尾换行符。

2.echo的三种形式打印:直接打印、单引号、双引号

buxizhizhou@ubuntu:~/lssc/chpt1$ echo "Welcome to Bash"
Welcome to Bash
buxizhizhou@ubuntu:~/lssc/chpt1$ echo Welcome to Bash
Welcome to Bash
buxizhizhou@ubuntu:~/lssc/chpt1$ echo 'Welcome to Bash'
Welcome to Bash
三种方法的副作用:

直接打印:不能显示文本中的分号——分号在Bash中是命令定界符。echo hello;hello被认为是两个命令echo hello和hello。

单引号:变量替换在单引号中无效。

双引号:不能打印叹号!。或将其转义,\!。确切地说,叹号在末尾、或者叹号后没有空格,则不能正常打印。如下面测试,可以看到,叹号后面有空格时还是可以打印的。

buxizhizhou@ubuntu:~/lssc/chpt1$ echo "Hello world !"
bash: !": event not found
buxizhizhou@ubuntu:~/lssc/chpt1$ echo "cannot include exclamation - ! within"
cannot include exclamation - ! within
buxizhizhou@ubuntu:~/lssc/chpt1$ echo "c!c"
bash: !c": event not found
buxizhizhou@ubuntu:~/lssc/chpt1$ echo "c ! c"
c ! c
buxizhizhou@ubuntu:~/lssc/chpt1$ echo "c! c"
c! c
buxizhizhou@ubuntu:~/lssc/chpt1$ echo "c !c"
bash: !c": event not found

3.printf.无自动换行符。参数类似于C语言,参数以空格分隔。如下:

#!/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
运行显示:

buxizhizhou@ubuntu:~/lssc/chpt1$ bash printf.sh 
No    Name       Mark
1     Sarath     80.35
2     James      91.00
3     Jeff       77.56





郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。