巩固一下Linux的知识时发现Shell脚本比较生疏了,于是在这里进行总结一下以便在后面的学习中方便查阅(当然文章部分参考了网上的讲解,就在这里声明了)。
方法一、以绝对路径执行bash shell脚本
/root/ShellLearn/HelloWorld.sh
方法二、切换到shell脚本所在的目录执行shell脚本
cd /ShellLearn
./HelloWorld.sh
方法三、直接使用bash或sh来执行bash shell脚本
cd /ShellLearn
bash HelloWorld.sh
或
cd /ShellLearn
sh HelloWorld.sh
方法四、在当前的shell环境中执行bash shell脚本
cd /ShellLearn
. HelloWorld.sh
或
cd /ShellLearn
source HelloWorld.sh
$# 是传给脚本的参数个数
$0 是脚本本身的名字
$1 是传递给该shell脚本的第一个参数
$2 是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$ 是脚本运行的当前进程ID号
$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误
同C、C++编程语言一样,Shell函数的定义如下:
function fname()
{
shell脚本语句;
}
用vim命令创建一个functionDemo.sh脚本文件
vim functionDemo.sh
#定义一个函数fname
function fname(){
#输出第一个参数
echo $1
#输出函数所在文件名
echo $0
#输出所有参数
echo $@
}
#将函数中传入两个参数
fname "arg1" "args"
执行结果:
Linux Bash Shell命令行的变量都被解析成字符串,有三种方法可以进行基本的加减乘除运算:let、(())和[]
1、while循环控制语句语法格式
while expression
do
command
command
done
2、if判断语句语法格式
if 条件
then
Command
else
Command
#if条件判断的结束,用反拼表示
fi
(1)判断字符串
1.if [ str1=str2 ];then fi ----当两个字符串相同时返回真
2.if [ str1!=str2 ];then fi ----当两个字符串不相等时返回真
3.if [ -n str1 ];then fi ----当字符串的长度大于0时返回真 (判断变量是否有值)
4.if [ -z str1 ];then fi ----当字符串的长度为0时返回真
(2)判断数字
1.int1 -eq int2 --相等
2.int1 -ne int2 --不相等
3.int1 -gt int2 --大于
4.int1 -ge int2 --大于等于
5.int1 -lt int2 --小于
6.int1 -le int2 --小于等于
(3)判断文件
1. -r file --用户可读为真
2. -w file --用户可写为真
3. -x file --用户可执行为真
4. -f file --文件存在且为正规文件为真
5. -d file --如果是存在目录为真
6. -c file --文件存在且为字符设备文件
7. -b file --文件存在且为块设备文件
8. -s file --文件大小为非0为真,可以判断文件是否为空
9. -e file --如果文件存在为真
(4)判断逻辑
1. -a --与
2. -o --或
3. ! --非
3、until循环控制语句语法格式
until condition
do
command
done
应用举例,判断输入的数字与4的关系,如果不是4给出提示,相反如果是4则成功退出:
#!/bin/bash
echo "Please input the num (1-10): "
#接受用户输入
read num
while [[ $num != 4 ]]
do
#if语句,后面详细介绍,这里判断是否小于4
if [ $num -lt 4 ]
then
echo "Too small ,Try again.."
read num
#判断是否大于4
elif [ $num -gt 4 ]
then
echo "Too big ,Try again.. "
read num
else
exit 0
fi
done
echo ’Yes ,you are right !‘
应用举例,当变量i比2大时就退出循环:
#!/bin/bash
i=0
until [ $i -gt 2 ]
do
let i+=1
echo "i=$i"
done
4、case控制结构语法
case expression in
pattern1 )
statements ;;
pattern2 )
statements ;;
...
esac
应用举例,判断机器系统:
#!/bin/sh
#uname -s获取linux系统内核
SYSTEM=`uname -s`
case $SYSTEM in
Linux)
echo "My system is Linux"
echo "Do Linux stuff here..."
;;
FreeBSD)
echo "My system is FreeBSD"
echo "Do FreeBSD stuff here..."
;;
*)
echo "Unknown system : $SYSTEM"
echo "I don't what to do..."
;;
#case的反拼写法
esac
未完待续……