Shell学习(1)

本系列博文来自菜鸟教程,自己学习使用。

了解Shell

目的:可以看懂shell脚本并自己编写脚本

#!/bin/bash     #使用bash shell

如下 test.sh

#!/bin/bash
echo "Hello world!"     (echo命令用于向窗口输出文本)  

执行shell脚本:

chmod +x ./test.sh      #(更改权限)
./test.sh

shell变量

变量定义与使用
your_name="xuan"
echo $your_name
echo ${you_name}        # 花括号可以帮助识别变量名边界

程序中最好加上花括号

for skill in Ada Coffe Action Java; do
    echo "i am good at ${skill}Script"
done

另外shell中的变量是可以重新定义的

只读变量(有一点像c语言中的const常量)
myUrl="http://www.google.com"
readonly myUrl
删除变量
unset variable_name

变量删除之后不可以再使用了,另外这个命令不可以删除只读变量

变量类型

1.局部变量:局部变量在脚本或命令中定义,仅在当前shell实例中有效,其它shell启动的程序不能访问局部变量。
2.环境变量:所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要时shell脚本也可以定义环境变量。
3.shell变量:shell变量是有shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行。

Shell字符串

单引号
str='this is a string'

单引号中的字符都会原样输出,无法引用变量(可以对变量再加单引号来引用),也不会转义字符

双引号
your_name='xuan'
str="Hello, I know you are \"$your_name\"! \n"
echo $str

输出结果:

Hello, I know you are "xuan"!

双引号可以引用变量,也可以转义字符

拼接字符串
your_name="xuan"
# 使用双引号拼接
greeting="hell, "$your_name" !"
greeting1="hello, ${your_name} !"
echo $greeting $greeting1
# 使用单引号拼接
greeting2='hello, '$your_name' !'
greeting3='hello, ${your_name} !'

输出结果:

hello, xuan ! hello, xuan !
hello, xuan ! hello, ${your_name} !
获取字符串长度
string="abcd"
echo ${#string}     # 输出4
提取子字符串
string="xiaoguang is good"
echo ${string:1:4}  # 输出iaog
查找子字符串

查找字符i或o的位置(输出先出现的字母的位置 字符串从1开始索引)

string="xuan is a great"
echo `expr index "$string" io`  # 输出 6

注意: 以上脚本中 ` 是反引号,而不是单引号 ’

Shell数组

bash只支持一维数组,数组大小不做限定,数组下标从0开始索引,这个数组和python中的列表有些相似,数组中可以是数,也可以是字符串,还可以是两者的混合。

定义数组

shell中括号表示数组,元素用空格分割开,定义数组的一般形式为:
数组名=(值1 值2 … 值n)

array_name=(value0 value1 value2 value3)
# 或者
array_name=(
value0
value1
value2
value3
)
# 单独定义数组的各个分量
array_name[0]=value0
array_name[1]=value1
array_name[n]=valuen

可以不使用连续的下标,且下标的范围没有限制

读取数组

读取数组格式:${数组名[下标]}

valuen=${array_name[n]}
echo ${array_name[@]}       #使用@符号可以获取数组中的所有元素
获取数组长度
# 获取数组元素个数
length=${#array_name[@]}
# 或者
length=${#array_name[*]}
# 获取数组单个元素长度
lengthn=${#array_name[n]}

Shell注释

单行注释可以用#
多行注释:

:<<EOF
注释内容
注释内容
注释内容
EOF
# EOF也可以换成其它符号
:<<`
注释内容
注释内容
注释内容
`

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值