shell笔记

脚本编写

编写hello.sh文件,通过chmod ug+x增加权限,直接可以执行

执行的三种模式

  • 输入脚本文件的绝对路径或者相对路径./**.sh(必须是可执行文件)或者/home /*.sh
  • sh 命令 sh hello.sh,用来判断是不是.sh文件(和绝对路径一样都是重新打开一个新的进程去打开文件)
  • source hello.sh 直接在bash进程执行(原因是进程间的数据是互通的)

export 变量引用顺序:从当前进程查询变量,如果当前进程没有这个变量默认去父进程查询这个变量。如果用export修饰变量,那么这个变量对于子进程就是可见的

export age=18
---
#!/bin/bash
echo $age

shell变量

变量类型:

  • 局部变量:局部变量在脚本或命令中定义,尽在当前shell实例中有效,其它shell启动的程序不能访问
  • 环境变量:==全局变量
  • Shell变量:由shell程序设置的特殊变量,shell变量中有一部分是环境变量,有一部分是局部变量
#变量的声明
name = "zhang"
for file in 'ls/etc'
#变量的调用
echo $name
#只读变量
url = "http://www.geogle.com"
readonly url
#删除变量
unset name

shell字符串

字符串可以用单引号,也可以用双引号,也可以不用
单引号

  • 单引号会原样输出,字符串中变量无效
    双引号
  • 双引号可以由变量
  • 双引号可以出现转义字符
#声明字符串
str1="hello"
str2='hello'

#字符串拼接--双引号
name='111'
name1="hello,"$name""

#字符串拼接--单引号
name='111'
name1='hello,'$name''#可以转义
name2='hello,${name}'
echo name2='hello,'$name''#不转义

#字符串长度
name='111'
echo ${#email}#‘#’代表长度
echo ${name:1:4}#从1到4输出

shell数组

  • bash不支持多维数组,并且没有限定数组的大小
  • 下标由0开始
#定义数组 括号表示数组,数组中元素用空格
数值={值1 值2 值3}
fv={"shenme" "gui"}
#读取数组
fv2=${fv[1]}
#@符号获取所有值
echo=${fv[@]}
#数组的长度
len=${#fv[1]}#得到是数组的值长度
len=${#fv[@]}#数组长度

多行注释

:<<!


!

运算符模式

val='expr $a+$b'
if[$a -eq $b]
then
	echo "$a - $b :a 等于 b"
else
-ne#不等
-gt#大于
-lt#小于
-ge#大于等于
-le#小于等于=
-a与
-o或
|&&短路与,前面错后面不执行
||短路或,前面错后面不执行
if[-z $a]#判断字符串长度,-n相反
then
	echo"-z $a :字符串长度为0"
else
...
if[ &a ]#是不是为空

#文件操作运算符

Shell控制流程

if condition
then
	command1
elif
then
	command12
else
	command
fi
###case
casein
模式1)
	command
	;;==break
模式2)
	command
	;;
esac
#for
for car in item1 item2 item3
do
command
done
###while
while condition
do
	command
done

###shell函数

fun(){
	read num
	return $(($num))
}
fun 1 2 3 4#传参 --类似 $ll /etc/...

括号

双小括号(( )) :整数比较、四则运算

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值