shell编程入门
Posted X1aoHei
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell编程入门相关的知识,希望对你有一定的参考价值。
shell就是操作系统的外层。
Hello World:
#!/bin/bash echo 'Hello World'
!/bin/shell 这是shell的头,必须指定;
编辑完成之后要赋予可执行的权限。
chmod o+x XXX.sh
然后执行./XXX.sh或者/bin/bash XXX.sh或者sh XXX.sh就可以运行这个文件了
定义变量与引用变量
#!/bin/bash #这是局部变量的定义 B=wang A=123 echo "$A-$B"
SHELL创建的环境变量:
$0--------当前程序名称
$n--------当前程序的第n个参数,$0输出当前程序名称,$1输出后面的参数
$*--------当前程序的所有参数(不包括程序本身)
$#-------当前程序的参数个数(不包括程序本身)
$?--------命令或程序执行完后的状态,一般返回0表示执行成功
$UID---------当前用户ID,0代表root
$PWD--------当前所在目录
$UID表示转义
echo "$UID IS $UID"
if条件判断
#!/bin/bash NUM1 = 1 NUM2 = 2 if(($NUM1 > $num2));then echo "123" else echo "321" fi
逻辑运算符:
-f 判断文件是否存在。 eg: if [ -f filename]
-d 判断目录是否存在。 eg:if [ -d dir]
-a 相当于and
-o 相当于or
-z 空字符串
mkdir -p 递归创建目录
多条件判断
#!/bin/bash
A=1
B=2
if(($A > $B));then
echo "123"
exit
elif(($A == $B));then
echo "321"
else
echo "123"
fi
for循环
for 变量 in 字符串
do
语句1
done
#!/bin/bash for i in `seq 1 15` do echo "num is $i" done
计算和
#!/bin/bash j=0 for ((i=1;i<=100;i++)) do j=`expir $i + $j` done echo $j
查看脚本执行过程:sh -x XXX.sh | more
while循环
while [[$i < 10]];do echo $i; ((i++)); done
扩展:
read -p "please input num: " input
回车然后输入123
echo $input
这个时候就会输出123
逐行读取一个文件(/etc/hosts)
#!/bin/bash while read line do echo $line done </etc/hosts
util循环语句
util 条件
do
? action
done
直到满足条件才退出,否则一直执行action
case选择语句
case $arg in
? pattern1)
? 语句1
? ;;
? pattern2)
? 语句2
? ;;
*)
语句3
;;
esac
select选择语句
select一般用于选择菜单的创建,可以配合PS3来做菜单的打印输出信息
select i in "Centos" "redhat" "ubuntu" ;do echo "Select you use system:" $i ;done
回车会打印
1)Centos
2)redhat
3)ubuntu
输入1回车会打印Select you use system:Centos
定义数组
A = {test1 test2 test3}
echo ${A[0]},输出test1
echo ${A[@]},输出所有参数
echo ${#A[@]},显示数组个数
echo ${A[@]/test2/test5},替换test2为test5
unset A[2],移除test3
函数
function command{
? 命令
}
如何调用函数:只要command即可
sed命令
我们用vi来修改文件内容时,假设将文件内的12批量替换成51
需要输入:%s/12/51/g
我们用sed命令:
sed ‘s/12/51/g’ xxx.txt
此时如果不加任何参数,sed不会应用修改,只是缓存起来了。
sed -i ‘s/12/51/g’ xxx.txt
就会应用修改。
在行首添加一个空格:
sed ‘s/^/&需要在行首添加的字符/g‘ xxx.txt
以上是关于shell编程入门的主要内容,如果未能解决你的问题,请参考以下文章
shell从入门到精通(-1)初次会面运行第一个shell脚本
shell从入门到精通(32)优秀的shell编程习惯和规范