shell学习总结-1
Posted 秦无殇的博客
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell学习总结-1相关的知识,希望对你有一定的参考价值。
1、查看系统所有shell和默认shell
查看系统所有的shell:
cat /etc/shells
查看系统默认shell:
echo $SHELL
2、第一个shell脚本,打印字符串Hello World
新建文件1.sh,在1.sh中输入代码:
1 #!/bin/sh 2 echo "Hello World"
第一行#!告诉脚本要用什么解释器来执行,/bin/sh是解释器的路径。
第二行echo命令表示向标准输出文件(一般是指显示器)输出文件,""包裹的表示字符串。
3、执行shell脚本
a、
1 #进入脚本所在路径 2 #给脚本赋予可执行权限 3 chmod +x 1.sh 4 #执行脚本 5 ./1.sh
b、
#无需在脚本第一行指定解释器信息
1 /bin/sh 1.sh
c、
1 source 1.sh 2 #source可以简写成. 3 4 #source 1.sh等价于 5 . 1.sh 6 7 #执行当前目录下的1.sh 8 . ./1.sh
4、shell变量
在 Bash shell 中,每一个变量的值都是字符串,无论你给变量赋值时有没有使用引号,值都会以字符串的形式存储。
定义变量的三种方式:
1 var_name=value1 2 var_name3=\'value2\' 3 var_name3="value3" 4 #=两边不能有空格
shell变量命名规范:
- 变量名由数字、字母、下划线组成;
- 必须以字母或者下划线开头;
- 不能使用 Shell 里的关键字(通过 help 命令可以查看保留关键字)。
定义变量举例:
1 name="Stephen Wang" 2 job="JAVA Dev" 3 company="ZTE" 4 5 echo ${name}
单引号和双引号的区别:
使用单引号包裹变量时{}里面的内容会原样输出;双引号包含变量时会先解析变量。例子如下:
1 #!/bin/sh 2 name="Vicent" 3 info=\'My name is ${name}\' 4 echo ${info}#My name is ${name}
5 info="My name is ${name}" 6 echo ${info}#My name is Bob
引用变量:
1 #引用变量在变量名称前面加上$即可 2 ${name} 3 $name
1 变量外面{}是可选的,作用是为了识别边界,应用举例 2 name="Bob" 3 echo "My name is ${name}what is your name?"
建议引用变量时都加上{}
修改变量值:
1 name="Bob" 2 echo "my name is ${name}"
#修改name的值为Vicent
3 name="Vicent" 4 echo "My name is ${name}"
只读变量:
1 name="Bob" 2 echo "my name is ${name}"
#定义name为只读变量
3 readonly name 4 name="Vicent" 5 echo "My name is ${name}"
删除变量:
1 #删除变量name 2 unset name
将命令的运行结果赋值给变量:
1 #var1=`command1` 2 #var2=$(command1) 3 4 var1=`pwd` 5 echo ${var1} 6 var2=$(date) 7 echo ${var2}
5、shell数组
shell数组定义:
1 array_name=(var1 var2 var3 var4)
获取数组元素,下表从零开始:
1 ${array_name[index]}
#@或*表示所有元素
赋值:
1 array_name[index]=value
获取数组的长度:
1 ${#array_name[@]} 2 3 ${#array_name[*]}
删除数组元素:
1 unset array_name[index]
数组常用语法实例:
1 #!/bin/sh 2 arr1=(data1 data2 data3 data4) 3 #赋值 4 arr1[4]=data5 5 #获取第5个元素,下表从0开始 6 echo ${arr1[4]} #输出data5 7 #获取数组长度 8 echo ${#arr1[@]} #输出5 9 10 #删除第一个元素 11 unset arr1[0] 12 13 echo ${#arr1[@]} #输出4
以上是关于shell学习总结-1的主要内容,如果未能解决你的问题,请参考以下文章