七、注释,管道线,后台命令
(1)注释:以#开头的正文行表示注释
(2)管道线:管道线是由竖杠“|”隔开的若干个命令组成的序列,每个命令执行时都有一个独立的进程,
前一个命令的输出是下一个命令的输入;管道线中有一类命令也成为“过滤器”,
即:首先读取输入,然后将以某种简单方式进行变换,相当于过滤,再将处理结果输出,
如:grep,sort,wc等命令就是过滤器;
(3)后台命令
如执行文件时:
前台方式:命令提示符之后输入,立即执行
后台方式:可能有些程序的执行需要花费较长时间,如:调用C编译器对C程序进行编译,如果在此同时想做别的事情,则要输入:
$ gcc m1.c&
八、命令执行操作符
(1)作用:
多条命令可以在一行中出现,它们可以顺序执行,也可能在相邻的命令间存在逻辑关系,即:逻辑“与”和“或
(2)顺序执行
在执行时,以分号隔开的各条命令从左到右依次执行
pwd ; who | wc -l ; cd /usr/bin
等价于每条命令独占一行
(3)逻辑与 &&
一般格式:命令1 && 命令2
其功能是:先执行命令1,如果执行成功,才执行命令2;
否则,若命令1执行不成功,则不执行命令2。
例: $cp ex1 ex10 && rm ex1
执行过程:如果成功的把ex1文件复制到ex2文件则删除ex1文件
(4)逻辑或||
一般格式为:命令1 || 命令2
其功能是:先执行命令1,如果执行不成功,则执行命令2;
否则,若命令1执行成功,则不执行命令2。
例: $cat abc || pwd
如果不能将文件abc的内容列出来,
则显示当前的工作目录的绝对路径。
九、成组命令
Shell中有两种方式可以将若干命令组合在一起,使其在逻辑上,被视为一条命令。
组合命令方式有两种:花括号{}和圆括号()
用法很简单这里就不多说了,注意{}和()在格式上面的区别
十、shell变量
Shell有两类变量:环境变量和临时变量。其中,
环境变量
永久性的变量,其值不会随shell脚本执行结束而消失;
临时变量
在shell程序内部定义,使用范围仅限于定义它的程序,出了本程序之外不能再使用,当程序执行完毕,它的值也就不存在了。
(1)用户定义的变量
1.用户定义的变量是最普通的shell变量,变量名是以字母或下线符打头的字母、数字和下线符序列,且大小写字母意义不同。
2. 变量赋值
定义变量并赋值的一般形式是: 变量名=字符串
例如: myfile=/usr/meng/m1.c
3.引用变量值: 在变量名前面加上一个符号“$”
注意:如果在赋给变量的值中要含有空格、制表符或换行符,那么,就应该用双引号把这个字符串括起来。
$ names="Zhangsan Lisi Wangwu"
注意:如果变量值须出现在长字符串的开头或者中间,为了使变量名与其后的字符区分开,避免shell把它与其它字符混在一起视为一个新变量,则应该用花括号将该变量名括起来。
例如,
$ dir=/usr/meng
$ cat ${dir}qc/m1.c 不能直接$ cat $dirqc/m1.c
(2)数组
bash只提供一维数组,并且没有限定数组的大小。
(3)变量引用
有很多方式可以百度,一般都用$
十一、输入输出命令
输入:read
输出:echo
十二、位置参数
十三、环境变量
Linux环境,也称为shell环境,由许多变量以及这些变量的值组成;
Shell环境包括:使用的shell类型、主目录所在位置、正在使用的终端类型等等;
具体查看更改环境变量可以百度
十四、export语句
(1)设计父子进程私有区转到export区
为了使其后的各个子进程能继承父进程中定义的变量,就必须用export(转出)命令将这些变量送入进程转出区。
export命令的一般使用形式是:
export [ 变量名 ],同一个export命令行上可以有多个变量名。
十五、算数运算
bash中执行整数算术运算的命令是let,其语法格式为:
let arg …
其中arg是单独的算术表达式。
例如: let “j=i*6+2”
等价于: ((j=i*6+2))
注意:
①当let命令计算表达式的值时,
若最后结果不为0,则let命令返回值为0,表示“真”;
否则返回值为1,表示“假”
这样,let命令可用于if语句的条件测试,
②运算符分优先级,其中1级最高,15级最低;
可以使用括号,用来改变运算符的操作顺序,即:
先计算括号内的表达式;
当表达式中有shell的特殊字符时,必须用双引号将其括起来。
③只有使用 $((算术表达式))的形式才能返回表达式的值
$ echo “((12*9))”
((12*9))
$ echo “$((12*9))”
108
十六、控制结构
Shell具有一般高级程序设计语言所具有的控制结构,
如:if ,case语句,循环结构和函数等。
在shell中,这些控制结构也称为“命令”,为了程序设计的习惯,才把它们称为语句。
(1)if语句
① 格式:
if 测试条件(test)
then 命令1else 命令2
fi (if语句结束)
②通常if语句的测试条件部分是利用test命令实现的。
test命令各选项的含义:(百度)
③条件判断部分也可以用一般命令执行成功与否来判断,所以if语句更一般的表达形式是:
if 命令表1
then 命令表2
else 命令表3
fi
④if语句中else部分可以缺省
⑤if 语句的else部分还可以是else—if结构,则用关键字“elif”代替“else if”。例如,
if test - f "$1"
then echo "$1 is an ordinary file . "
elif test - d "$1"
then (cd $1 ; ls)
else echo "$1 is neither a file nor a directory . "
fi
⑥当测试条件由一条或多条命令组成时,以最后一条命令是否执行成功为准,来判断then和else
(2)条件测试
(3)case语句
(4)while语句
(5)until语句
(6)for语句
(7)break和continu语句
(8)exit命令
(9)select语句
(10)函数
(11)shell内置命令
(12)shell脚本调试
解决环境设置问题
解决脚本错误