(二)shell脚本

shell:
shell是一个在操作系统之上的软件,linux登录后默认就进入这个软件 shell是一个命令的解释器,能解析用户所输入的命令 (ls cp rm pwd 等等) shell拥有自己内建的命令集

bash
bash(Bourne Again shell )是shell的扩展,并且完全兼容shell(类似vim与vi的关系)


第一个shell脚本
第一步:使用文本编辑器(vim)来创建文本文件(一般以.sh结尾)
第一行必须包括shell声明:#!
#!/bin/bash (告诉系统执行的时候要调用什么解释器)
#开头的是shell的注释
第二步:输入命令 echo “hello world”
第三步:给文件添加执行权限 chmod 755 hello.sh
第四步 运行脚本
第一种方式:指定脚本的绝对或相对路径来运行 ./hello.sh
第二种方式:直接运行解释器,将脚本作为参数运行 sh hello.sh
常见问题 -bash: ./hello.sh: Permission denied 没有赋予执行权限


shell变量/赋值
变量:
变量以字母或者下划线开头,后面接任意长度的字母、数字和下划线,如 var=linux 变量的引用需要在前面加$符号 ,

如echo “$var” 如果变量的值中间有空格,需要用双引号引起来,如var=“hello world”

单双引号区别:

单引号变量不解析
双引号变量可以解析
特殊变量:
位置参数 $n ,n为数字

$0为命令本身

$1-$9是命令行第一道第9个参数

$* 代表所有参数

$# 代表参数的个数

$? 代表上一个命令的返回状态

命令替换和赋值
命令替换的格式: $(cmd) 或者 cmd # ``为tab上的反引号

在执行命令的时候,会先将$(cmd) 或者 cmd 里的命令先执行一遍,再将结果返回到原来的命令中

var=$(uname -a) echo $var

命令替换和管道的区别?
命令替换是将一个命令的输出作为另外一个命令的参数,而管道是将命令的输出作为下一个命令的标准输入

如 date +%Y|touch touch $(date +%Y)

算数运算和赋值
eg: echo 1+2,没有输出3。因为shell需要特殊的格式来进行算数运算

方式一   ((i=$j+$k))
方式二   let i=$j+$k

赋值

var=$(($i+$j))
echo $var

示例:

sh lufei.sh ni(位置参数)
lufei.sh:
#!/bin/bash
echo $1 
echo $(id)     id的执行结果作为echo的参数
echo `id`  反引号,在esc按键下方, 跟上面一样

多个命令分隔符
分号(;)是shell的命令分隔符, 让同一行的命令能够顺序执行。如echo 1 ;echo 2


课上小例子
1、命令行输入2个数字,写个小程序,计算2个数字的和,并输出结果
2、命令行输入2个文件,写个小程序,把这两个文件都拷贝到以年月日命名的目录下,并输出每次拷贝的执行结果 date +%Y%m%d

1. 
#!/bin/bash
let sum=$1+$2
echo $sum


2.
#!/bin/bash
file1=$1
file2=$2
dir=`date +%Y%m%d`
mkdir $dir
cp $file1 $dir&&echo $?
cp $file2 $dir&&echo $?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值