=============================shell编程==================================
shell编程的工作主要方向--》系统运维 --》linux服务器开发
ubuntu
shell编程是使用特定的语法规则
window的脚本以.bat结尾
shell的脚本以.sh
脚本程序,不需要编译器去编译,直接使用解析器就可以运行程序
======shell基本语法
第一行的格式
写法一: #!/bin/bash
写法二:#!/bin/sh
写法三:#!/bin/dash (精简压缩)
#! =========是固定格式
/bin/bash ======shell脚本的解析器(用于翻译你写的shell命令)
=======================
shell编程注意的问题
(1)用window写shell出现问题(不建议使用window 下的编译工具 建议使用 vim编辑器)
(2)shell中注析符号用# (不要和和c语言中的" // "弄混)
(3)shell编程中 变量赋值不能乱加空格 ,对于空格比较严格,不能随便使用空格
=========================
shell编程的变量
shell编程中有三种类型:普通变量,环境变量,命令行变量
(1)普通变量 变量名定义方式 ==========变量名=变量的值
(2)环境变量
PATH LD_LIBRARY_PATH
env查看所有的环境变量
export PATH=/xxx/xxx/xxx:$PATH
(3)命令行变量
(主函数传参)
$#表示参数的个数
$n表示是第n个参数
$$当前id号
$@打印所有的参数
$?上一条shell语句执行的结果,执行成功为0,错误为非0值
$*打印所有的参数
在运行时加上source 可以换路径
mkdir 要创建的文件夹可以嵌套的创建 要加上-p
======================================
shell编程的输入,输出
输出:echo $string
输入:read +变量
$取变量里面值
使用双引号:echo "hello work" 原样输出 hello work
使用单引号:echo 'hello work' 原样输出 hello work
使用反引号:echo `ls` 必须填写合法的shell命令,以不换行方式打印
双引号套了一个双引号:echo "hello work"" 原样输出 hello work
双引号套了一个单引号:echo "'hello work'" 打引出 'hello work' 带有单引号
双引号套了一个反引号:echo "`ls`" 单引号里面填写合法的shell命令,以换行方式打印
单引号套了一个双引号是 echo ''hello work'' 原样输出
单引号套了一个单引号 echo '"hello work"' 打印出"hello work"
单引号套了一个反引号 echo '`ls` 打印出字符‘ls’'
反引号里面加双引号echo `'ls'` 以不换行方式打印
反引号里面加单引号echo `'ls'` 以不换行方式打印
反引号里面加反引号 echo ``ls`` 打印出字符串ls
========================================
转义字符\ 反斜杠
\$ 就不是表示参数
通配符*
[1-9]1到9其中一个数
[^1-9]除开1-9
===============================
管道 | (将多个命令组合在一起)
grep "hello" 2.txt -Hn
grep he[a-z]lo 2.txt -Hn
文本搜索
=================================
shell编程中的条件判断
1条件判断(一般跟test语句使用)
格式
方法一:
if [ -e 1.txt]
then
echo hello
else
echo work
fi
方法二:
if test -e 1.txt
then
echo hello
else
echo work
fi
================================
循环 for whileutil
循环也支持break,continue
declare -i n 声明变量n是数值
for((i=0;i<100;i++)) 注意有两个圆括号
`seq 1 100` 从1到100范围
for n in n的取值范围 for n in `seq 1 100`
do
done
=========================================
shell编程运算
+ - * /
方法一:declare -i a=10
declare -i b=5
declare -i sum=a+b
方法二:declare -i a=10
declare -i b=5
declare -i sum=$a+$b
前面两种写法的混合运算跟大家学习数学中的写法是一样
方法三:
`expr $a + $b`
方法三中乘法需要转义,其他的不用,并且运算符两边敲空格
`expr $a \* $b`
`expr $(($a + $b)) \* $c`