- 1、变量:字符串、数字、环境变量和参数
- 2、条件:shell中的布尔值
- 3、程序控制:if、elif、for、while、until、case
- 4、命令列表
- 5、函数
- 6、shell内置命令
- 7、获取命令执行结果
- 8、 here文档
1、变量
如果一个$变量表达式放在双引号""
中,则程序执行到此处会替换成变量值,如果放在单引号''
,则不会发生替换现象,如果加上转椅字符\
,则会原文输出取消其特殊含义
#!/bin/sh
var ="hello"
echo $val
echo "$var"
echo '$var'
echo \$var
echo enter some test
read var
echo '$var' now equals $var
输出结果如下图所示
./bash.sh
hello
hello
$var
$var
enter some test
hello world
$var now equals hello world
1.2、环境变量
$HOME
:当前bash用户家目录
$PATH
:以冒号分隔用来搜索命令的目录列表
$PS1
:命令提示符,通常是就是一个流行的默认值,它给出了用户名、机器名以及当前目录名、也包括一个$字符
$PS2
:二级提示符,提示后续输入,通常为>字符
$IFS
:输入域分隔符,当shell提示输入时,给出用来分隔单词的一组字符
$0
:shell脚本名称
$#
:shell参数个数
$$
:shell脚本进程号,脚本程序通常用其生成一个临时唯一文件,比如/tmp/tmpfiles_$$
$1,$2,$3
:脚本第一个 第二个 第三个参数
$*
:脚本所有参数,使用IFS
将其分隔,如果IFS
为空,则参数会挤在一起
$@
:脚本所有参数,跟IFS
无关(推荐使用)
2、条件
使用test
或者[
命令
条件测试分为3类:
- 字符串比较
#字符串相同则结果为真
string1 = string2
#字符串不同则结果为真
string != string2
#字符串不为空则结果为真
-n string
#字符串为null则结果为真
-z string
- 算数比较
#表达式结果相等则结果为真
val1 -eq var2
#表达式不相等则结果为真
var1 -ne var2
#var1 大于var2则结果为真
var1 -gt var2
#var1 大于或等于var2则结果为真
var1 -ge var2
#var1 小于var2则结果为真
var1 -lt var2
#var1 小于或等于var2则结果为真
var1 -le var2
#表达式为假则结果为真
! expression
- 文件条件测试
#文件为目录
-d file
#文件存在则结果为真
-f file
#文件group id为真
-g file
#文件的user id为真
-u file
#文件可读
-r file
#文件可写
-w file
#文件大小不为0
-s file
#文件可执行
-x file
3、控制结构
-
if
语句
if condition
then
statements
else
statements
fi
-
for
语句
遍历输出a b c
#!/bin/bash
for val in a b c
do
echo $var
done
遍历输出/home下的所有.sh文件
#!/bin/bash
for file in $(ls /home/*.sh)
do
echo $file
done
-
while
语句和until
语句
while condition
do
statements
done
############
until condition
do
statements
done
-
case
语句
#!/bin/bash
#单一匹配case
echo "please input yes or no'
read var
case "$var" in
yes) echo "var is $var";;
no) echo "var is $var";;
y) echo "var is $var";;
n) echo "var is $var";;
esac
##合并匹配case
case "$var" in
yes | y | Yes | YES) echo "var is $var";;
no |n | No | NO) echo "var is $var";;
esac
- AND列表
statements1 && statements2 && statements3
从左到右执行命令列表,只有前面命令执行成功才执行下一条命令
if [ -f file1 ] && [ -f file2 ] && [ -f file3 ]
then
echo "file 1 2 3 is exist"
fi
- OR列表
statements1 || statements2 || statements3
从左到右执行命令列表,只要一条命令成功为止,其后命令不在执行
if [ -f file1 ] || [ -f file2 ] || [ -f file3 ]
then
echo "file 1 2 3 someone is exist"
fi
4、函数
基本shell函数如下:
#!/bin/bash
foo(){
return 0
}
echo start
foo
echo end
5、命令
-
break
:跳出for while until
循环 -
(:)
:空命令 -
continue
命令:直接跳到for while until
下一次循环开始地方执行 -
(.)
命令:用于当前shell执行命令 -
echo
命令:shell的printf命令 ;echo -e
去掉换行符 -
eval
命令:对参数进行求值 -
exec
命令:将当前shell替换成其他命令,且exec后续命令不再执行 -
exit n
命令:退出脚本程序以退出码n结束运行 -
export
命令:导出参数到子shell中,并使之咋子shell有效 -
expr
命令:将命令作为表达式求值,较新的shell使用$((....))
x =`expr $x+1`
网友评论