shell知识小结
1. #! /bin/bash 或者是 #! /bin/sh 这是一种固定的格式,其中后面跟的bin或者是bash指的是跟的何种解析器
2.在shell中的预定义变量
$# : 位置参数的变量
$* : 所有位置参数的内容 (在Linux中*代表所有的意思)
$? : 命令行执行后返回的状态
$$ :当前进程的进程号
$0 : 当前执行的进程名
$1 : 脚本中的第一个变量
$2 : 脚本中的第二个变量
3.下面是是一个shell脚本的实例:里面实现的是新建a b c三个目录,进入目录,然后在目录里面新建a.txt b.txt c.txt 三个文件,再在每个文件里面写上一句话”hello world”,最后退出文件
注意:1.在程序中[ $# -ne 3 ]中在方括号的前后都需要加上空格键,否则会编译错误。
2.当在执行./test.sh a b c 的时候,系统会提示权限不够。我们可以使用命令:chmod 777 test.sh 来更改权限
分析:首先,从第五行开始,开始判断输入的变量是不是三个。
如果不是,则将错误信息:Usage : $0 dirname1 dirname2 dirname3打印出来。其中,exit 3的作用是:当我们在终端上输入命令:”$?”,可以看出命令行执行后的状态。这样,可以有利于错误信息的定位。
如果输入的变量是三个,接下来便在在终端上输出变量1,变量2,变量3以及三个变量的全输出。还要注意在使用if语句后,要在后面加上fi.
从16行开始,相当于一个循环语句。其中$1 $2 $3就相当于a b c 变量,在语句中的${dir}也就各个变量。
5.实例:从终端上输入一个字符,判断它是什么样的字符。用shell编写(case的条件选择)
6.实例:用shell判断folder是目录还是文件
说明:方括号中的-r是用来判断是否为一个目录,-f判断是否为一个文件。
有必要说明的是。第三行中的&&的作用是,只有当左边判断folder是一个目录后,才会输出后面的内容。否则,就不输出。
而||的作用是当左边判断folder不是一个文件后,就会输出”this is not a file”.
7. 介绍两个小命令:
Control+z 可以将进程切换到后台
fg 将进程切换到后台