Shell程序的特点:
1.简单易学
2.解释性语言:不需要编译即可执行
查看系统默认SHELL echo $SHELL
目录操作
1.Alt + .
2.按下Esc 后按 .
3.!$
4 . cd -
切换当前目录和上次使用的目录
Shell脚本程序有两种执行方式:
1、交互式执行
2、作为程序文件执行。
通常采用第二种方式较多
交互式脚本
[root@localhost ~]# for filename in `ls /etc/`
> do
> if echo "$filename" | grep "xml"
> then
> echo "$filename"
> fi
> done
脚本
#!/bin/bash
#for循环开始
for filename in `ls /etc/ `
do
#如果文件名包含xml
if echo "$filename" | grep "xml"
then
#输出文件名
echo "$filename"
fi
done
修改文件权限
用户可以通过chmod命令修改文件的权限属性。
chmod [options] filename
[root@localhost chapter1]# chmod u+x ex1-2.sh
[root@localhost chapter1]# ll
total 4
-rwxr--r-- 1 root root 116 Dec 18 23:11 ex1-2.sh
Shell脚本的基本元素
对于一个基本的Shell程序来说,应该拥有以下基本元素:
1)第1行的“#!/bin/bash”。
2)注释:说明某些代码的功能。
3)可执行语句:实现程序的功能。
输出Hello World
#!/bin/bash
#输出字符串
echo "Hello Bash Shell!"
[root@localhost chapter1]# chmod +x ex1-5.sh
[root@localhost chapter1]# ./ex1-5.sh
Hello, Bash Shell!
指定命令解释器
命令解释器用来解释并执行当前脚本文件中的语句,语法:
#!path
例如:#!/bin/bash
Shell注释
单行注释
通过在代码中增加注释可以提高程序的可读性。传统的Shell只支持单行注释,其表示方法是一个井号“#”,从该符号开始一直到行尾都属于注释的内容。
例如:
#comment1
#comment2
#comment3
...
多行注释
用户还可以通过其他的一些变通的方法来实现多行注释,其中,最简单的方法就是使用冒号“:”配合here document,语法如下:
:<<BLOCK
....注释内容
BLOCK
#!/bin/bash
:<<BLOCK
本脚本的作用是输出一行字符串
This is Comment
BLOCK
echo "Hello world!"
如何执行Shell脚本
在Linux中,如果要执行某个Shell脚本,用户可以通过3种方式来实现。这3种方式分别为:
授予用户执行该脚本文件的权限,使得该脚本能够直接执行。
通过调用Shell脚本解释器来执行。
通过source命令来执行。
例如:
[root@localhost chapter1]# /bin/bash ex1-5.sh
Hello, Bash Shell!
无执行权限使用脚本
[root@localhost chapter1]# bash ex1-5.sh
Hello, Bash Shell!
[root@localhost chapter1]# sh ex1-5.sh
Hello, Bash Shell!
[root@localhost chapter1]# source ex1-5.sh
Hello, Bash Shell!
[root@localhost chapter1]# . ex1-5.sh
Hello, Bash Shell!
有执行权限使用脚本
[root@localhost chapter1]# ./ex1-5.sh
Hello, Bash Shell!
[root@localhost chapter1]# chapter1/ex1-5.sh
Hello, Bash Shell!
各类引号的区别
Shell语言中一共有3种引号,分别为
单引号(’ ‘)单引号括起来的字符都作为普通字符出现
双引号(” “)双引号括起来的字符,除“$”、“\”、“’”和“””这几个字符仍是特殊字符并保留其特殊功能外,其余字符仍作为普通字符对待,
反引号()。反引号括起来的字串被Shell解释为命令,在执行时,Shell首先执行该命令,并以它的标准输出结果取代整个反引号(包括两个反引号)部分
反引号``等价于$()
用法为
[root@qzw ~]# echo "user is `whoami` "
user is root
[root@qzw ~]# echo "user is $(whoami)"
user is root