Shell脚本

一、概述

  1. 一般以.sh文件后缀来代表某个文件是个脚本文件
  2. 脚本文件是文本文件,所以不能直接执行,所以需要解释器,目前最好用的解释器之一bash
  3. java语言是跨平台的,.java--->.class,  .class文件通过java虚拟机来解释执行
  4. java虚拟机:其实就相当于main.exe一个可执行文件,专门来解释执行.class的
  5. java相对于C/C++效率低的原因,因为C/C++可以直接产生.exe文件执行,java必须借助java虚拟机来执行。
  6. 解释型与编译型的区别(面试):解释型需要解释器

二、脚本的执行

  1. 脚本文件第一行以  #!开头,后边解释器的路径,不写的话用的是系统默认的,eg:#!usr/bin/bash
  2. 脚本文件中单独的一行开头为#代表屏蔽
  3. 执行的时候命令 eg:/usr/bin/bash my.sh   这句执行代表的意思是启动bash这个解释器(程序),将my.sh当参数传进去。 但是通常会直接说执行这个脚本
  4. 如果直接 ./my.sh 是会出错的,因为my.sh 并没有执行权限,如果先通过chmod命令将它改变成可执行文件,就可以执行。具体的过程是:执行这个文件时,看到#!开头,知道它是一个脚本文件,后边指定了它的解释器,就启动解释器去执行

三、脚本的写法

1.变量

本地变量

#!/usr/bin/bash
#脚本语言的变量是让一个变量名指向一块空间,C语言的变量定义时候将它与一块空间关联起来
#脚本没有类型之说,只能说str是一个变量
#变量赋值时等号左右边不能有空格,比较字符串才有空格
str="wang"      
val=123

#打印命令echo,底下代表打印这个字符串,变量前边加$代表取val这个变量的值
echo $str
echo str 
echo $val

#底下打印出的值与上边并没有区别,加双引用并不改变,加单引号会按字符串输出
echo "str" 
echo "val = $val"

#从键盘获取数据,read+变量名
read a

exit 0

环境变量

#!/usr/bin/bash
#环境变量:在父进程中定义,继承过来使用的
#自己没用定义的,但是可以直接使用

echo "PATH=&PATH"
#$0 shell脚本的名字
#$# 传递给脚本的参数个数
#$PSI 输入命令提示符
#$$shell脚本的进程号

exit 0

参数变量

#!/usr/bin/bash
#\为转义字符
#环境变量,$1为传给脚本的第一个参数,$2为传给脚本的第二个参数,以此类推
echo "\$1=$1"
echo "\$2=$2"
echo "\$3=$3"

#一般有以下的用法
name=$1
passwd=$2

echo "name = $name,passwd = $passwd"
exit 0

2.条件

#!/usr/bin/bash

#比较命令test,满足执行then,fi代表条件判断结束

#字符串比较
echo "input"
read a
if test "hello" = "$a"
then 
  echo "=="
fi

#第二种方式  
if [ "hello" = "$a" ]
then    
   echo "=="
fi

#满足条件与不满足条件都有输出
#算数比较,判读是否大于-gt,判断是否大于等于-ge
if [ "$a" -gt 10 ]
then 
   echo "$a > 10"
else
   echo "$a <= 10"
fi

#文件条件测试
#判读是否为目录文件-d+文件名,判读是否为普通文件-f+文件名
if [ -d "$a" ]
then 
    echo "$a is dirent"
elif [ -f "$a ]
then 
    echo "$a is file"
else
    echo "$a not exist"
fi

i=0
#让变量自增
let "i+=1"
#expr表示执行算数运算符
i=`expr $i + 1`
echo "i=$i"

#如果要执行将ls这个命令,得加个括号,不然ls就是一个普通的变量,其他命令也是如此
str=$(ls)
echo "str=$str"
exit 0

3.循环

#循环有3中
#1.for循环,一般用于有限个值的操作

for filename in $(ls)
do 
    echo "$filename"
    sleep 1
done

#2.while循环
#while condition do states
#done
#while [ : ] 死循环
while [ "1" == "1" ]
do
    echo "run"
    sleep 1
done

#3.until循环,当condition不成立时循环,知道检测到一个东西的时候停止
#until condition do statements done


exit 0

四、脚本的优点

  • 脚本的开发速度快
  • 对性能没有要求一般用脚本做
  • 脚本快的原因是通过执行一些命令去完成功能
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值