1.linux的shell编程
linux的shell是一门脚本语言,所见即所得
shell编程一般指代shell脚本的开发,不是指代shell内核的开发
查看shell内核:
cat /etc/shells
/bin/sh (用的多,免费的 )
/bin/bash(用的多,免费的)
/sbin/nologin
/bin/dash
/bin/tcsh
/bin/csh
统一软件安装路径:
mkdir -p /export/softwares 安装包
mkdir -p /export/servers 解压包
mkdir /export/servers/shells 放shell脚本的目录
------------------------------------------------------------------------
shell脚本只要是个文件就行,约定俗称用.sh结尾
第一行#!/bin/bash 指定shell内核
1.shell脚本运行方式:
第一种:sh 或者 bash 使用sh内核,bash内核运行此程序
第二种:加入可执行权限 直接运行文件 ./hello.sh ./当前路径下hello.sh文件
使用绝对路径也能执行
2.shell的变量定义:
规则:变量名和等号之间不能有空格(除了变量不空格其他到处都空格);
首字母必须为字母
中间不能有空格,可以使用下划线
给文件加上行号:在非编辑模式下:set nu
定义变量:
name = "itcast.cn"
使用变量
${变量名} #标准写法,多用于字符串的拼接
$变量名 #常用于平常自己设置环境变量
变量权限(用的不多):
readonly(只读变量) readonly variable_name
unset(删除变量) unset variable_name(不能删除只读变量)
3.变量范围(重点):
局部变量:
仅仅在当前shell交互窗口中有效,在其他交互窗口中无效
环境变量:
所有的shell窗口共享
set:查看所有的环境变量
set $ORCL_SID = orcl;设置Oracle临时的环境变量
shell变量:
shell变量由shell程序设置,只在当前的脚本里面有效;其他脚本无效
4.shell的特殊字符
$0-n:
$0脚本的名字./shell_test.sh 执行 为 ./shell_test.sh; sh shell_test.sh执行 shell_test.sh
$1-n 第一个参数到第n个参数
$# 传递到脚本的参数个数
$* 以一个但字符串展示所有传递向脚本的参数 “$1 $2 $3”
$$ 脚本运行的进程号
$! 后台运行的最后一个进程的ID
$@ 与$*目的相同,展示不同 "$1" "$2" "$3"
$? 最后命令退出的状态 0为正常,其他表示有错误。
5.shell的运算符(再次强调除了变量不空格,其他到处都空格)
#计算ab的值
a=1
b=2
echo `expr $a + $b`
#a*b
echo `expr $a \* $b`
飘号`` :对里面的内容先计算后返回
expr : 说明后面是算数运算符 相当于 $((1+2))
6.流程控制语句
if [ $a -eq $b ] 这里再次强调变量不空格,其他都空格
then
echo "a与b相等"
elif
echo "a比b大"
else
echo "a比b小"
if
for循环
#(掌握这一种即可)
for N in 1 2 3
do
echo $N
done
for ((i=0;i
do
echo "welcome $i times"
done
while循环:
i=1
while ((i
do
let i++
echo $i
done
let:让什么什么做什么
while true
do
echo `date`
sleep 0.5
done
case条件(不咋用)
case 值 in
1) echo "选择了1"
;;
2) echo "选则了2"
;;
*) echo "其他情况"
esac
注意:case esac开头结尾。
;;双分号
人机交互测试:
read aNum;
等待用户输入并获取
7.函数的定义:
function hello(){
echo "abc"
echo "给我传点参数呗"
}
调用:
hello
function 可以简写,千万别简写shell脚本本来就够难读的了。