shell 是你和linux系统之间的接口. 当然X Windows也是一个接口.
BASH 是linux缺省安装的shell. /bin/sh实际上是/bin/bash的链接.
查看版本使用命令 /bin/sh -version
管道和重定向
重定向输出
重定向输出用>操作符
ls -l > a.txt
ps >> b.txt 是在现有文件后面追加.
重定向输入
重定向输入用<操作符
管道
管道用操作符|
ps|sort|more
shell脚本有两种执行方式:
1. >/bin/sh shell_file
2. 把一个shell脚本转变成可执行的
chmod +x shell_file
shell的语法
❑ Variables: strings, numbers, environments, and parameters
❑ Conditions: shell Booleans
❑ Program control: if, elif, for, while, until, case
❑ Lists
❑ Functions
❑ Commands built into the shell
❑ Getting the result of a command
❑ Here documents
Variables
变量在使用之前无需声明类型.
所有变量均被认为是字符串类型.
自定义的变量名通常全部小写.
赋值符号两边不得有空格.
取变量的值应在变量名前加上$.
例子:
$ salutation=7+5
$ echo $salutation
7+5
$ salutation=Hello
$ echo $salutation
Hello
如果变量的值中间有空格,两侧必须用双引号括括起来.
例子:
$ salutation=”Yes Dear”
$ echo $salutation
Yes Dear
shell脚本执行之前,有几个环境变量会初始化
$HOME 当前用户的主目录
$PATH 搜索路径
$IFS shell脚本里接收输入的分隔符
$0 shell脚本的名字
$1, $2, ... 传递给shell脚本的单个参数.
$* 传递给shell脚本的全部参数的列表(用$IFS的第一个字母分隔).
$# 传递给shell脚本的参数个数
$$ shell脚本的进程ID
Conditions
条件结构:
if condition
then
statements
else
other statements
fi
字符串条件
-n string 字符串不为空
-z string 字符串为空
string1 = string2 字符串相同
string1 != string2 字符串不相同
算术比较
expression1 -eq expression2 表达式相等
expression1 -ne expression2 表达式不相等
expression1 -gt expression2 前者大于后者
expression1 -ge expression2 前者大于或等于后者
expression1 -lt expression2 前者小于后者
expression1 -le expression2 前者小于或等于后者
! expression 表达式为false
文件条件
-d file 文件是一个目录
-e file 文件存在
-f file 文件是一个正则文件
-g file 文件属于某个组
-r file 文件可读
-s file 文件尺寸非零
-u file 文件属于某个用户
-w file 文件可写
-x file 文件可执行
for
for variable in values
do
statements
done
while
while condition
do
statements
done
case
case variable in
pattern [ | pattern] ...) statements;;
pattern [ | pattern] ...) statements;;
...
esac
function
function_name () {
statements
}
Commands
可以打2类命令:
外部命令(普通命令),可以在命令提示符下执行;
内部命令(内建命令),不可以像外部命令一样被调用.大部分内部命令都是符合POSIX规范的标准程序.
主要内部命令有:
break
:
continue
.
echo
eval
非常有用,允许你对一个表达式进行计算
exec
exit
exec
export
expr
printf
return
set
shift
trap
unset
find
grep
阅读(684) | 评论(0) | 转发(0) |