Shell脚本

第一个Shell脚本

test.sh内容

#! /bin/bash  
#告诉系统用什么解释器执行
#井号为注释
echo "what's your name?"  
#echo命令打印输出
read name   
#read命令读取键盘输入
echo "hello $name"

运行shell两种方法:

  1. 作为可执行程序
    chmod +x ./test.sh 加可执行权限
    ./test.sh 作为二进制程序运行要加./告诉系统在当前目录下查找
  2. 作为解释器运行的参数
    /bin/bash test.sh

Shell变量

定义变量

var1="value"变量名和等号之件不能有空格

使用变量

echo ${var1}变量名前加美元符号,花括号用于限定边界,防止二义性

重新定义变量

var1="null"

只读变量

readonly var1使用readonly命令把变量var1设置为只读;
这时无法给变量重新赋值

删除变量

unset var2使用uset命令删除变量,注意,unset不能删除只读变量

变量类型

1)局部
2)环境
3)shell变量


Shell中特殊变量

变量含义
$当前shell进程ID
0脚本文件名
n传递给基本的第n个参数
#传递给脚本的参数个数
*传递给脚本的所有参数,被双引号包含时”“,与@有所不同,*会将所有参数当做一个整体
@传递给脚本的所有参数,被双引号包含时”“,与*有所不同,@会将参数分割开来
?上个命令的退出状态,或者函数的返回值 成功0 失败1

例子
test.sh内容如下

#! /bin/bash
echo "current file name:$0"
echo "first parameter:$1"
echo "second parameter:$2"
echo "all parameters:$@"
echo "all parameters:$*"
echo "total numbers of parmeters:#"

执行./test.sh bxb lsy后结果

current file name:./test.sh
first parameter:bxb
second parameter:lsy
all parameters:bxb lsy
all parameters:bxb lsy
total numbers of parmeters:#

Shell替换

转义字符
转义字符含义
\\反斜杠
\a警报,响铃
\b退格,删除键
\f换页(FF),将当前位置移动到下页开头
\n换行
\r回车
\ttab,水平制表符
\v垂直制表符

使用时echo -e "换行前\n换行后"加参数-e使用转义,加上-E禁用转义

命令替换

命令替换指Shell可以先执行命令,将命令结果保存在变量中,再在合适的地方输出
使用方法 反引号将要执行的命令扩起来

DATE=`date`
#这里date是shell命令,获取当前时间,用反引号括起来,执行结果保存在变量DATE中
echo $DATE
变量替换

变量替换可以根据变量的状态(是否为空 是否定义)来改变它的值

可以使用变量替换的形式

形式说明
var使用变量本身的值
var:-word如果变量var为空或已被删除(unset),那么返还word,不改变
var:=word如果变量var为空或被unset,返回word,并将var设为word
var:?message如果var为空或被unset,那么将消息message送到标准错误输出,可以用来检测变量是否被正常赋值;若此替换出现在Shell脚本中,脚本将停止运行
var:+word如果变量已被定义,返回word,但不改变变量的值
Tips:变量替换都在var为空或unset情况下执行,如果var已被设置,将直接输出变量

例子
test.sh内容如下

#!/bin/bash

echo ${var:-"Variable is not set"}
echo "1 - Value of var is ${var}"

echo ${var:="Variable is not set"}
echo "2 - Value of var is ${var}"

unset var
echo ${var:+"This is default value"}
echo "3 - Value of var is $var"

var="Prefix"
echo ${var:+"This is default value"}
echo "4 - Value of var is $var"

echo ${var:?"Print this message"}
echo "5 - Value of var is ${var}"

执行./test.sh后结果

Variable is not set
1 - Value of var is 
Variable is not set
2 - Value of var is Variable is not set

3 - Value of var is 
This is default value
4 - Value of var is Prefix
Prefix
5 - Value of var is Prefix
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值