Shell学习笔记
来源:互联网 发布:网络语言酱紫什么意思 编辑:程序博客网 时间:2024/05/20 00:16
Shell学习笔记
Shell本身是一个用C语言编写的程序,它是用户使用Unix/Linux的桥梁,用户的大部分工作都是通过Shell完成的。Shell既是一种命令语言,又是一种程序设计语言。
Shell 有两种执行的方式:
- 交互式:解释执行用户的命令,用户输入一条命令,Shell就执行一条命令。
- 批处理:用户事先写好一个Shell脚本,其中有很多条命令,让Shell一次把这些命令执行完,而不必一条一条的敲入。
第一个shell脚本:
#!/bin/bash //告诉系统用那一种Shell来执行 echo "hello world!"
当完成编写后保存文件为.sh文件(建议用vim编写),
第二步:需要修改文件的权限为可执行权限。
chmod +x ./***.sh //进入到文件所在位置,添加可执行权限,/***.sh //执行脚本sh ***.sh //执行脚本
第二个脚本将解释输入:
#!/bin/bash echo "what is you name?" read pname //使用read命令从stdin中读取字符串并且将其赋值给pname echo "hello,$pname"
shell中的变量
(1)变量的定义
pname="张三"url="www.baidu.com"num=10
shell脚本中定义变量时变量名不需要加($)
(2)变量的使用
使用一个已经定义过的变量需要在变量名前面加上$
name="zhangsan"echo $name
有些时候为了能够将变量名和字符串分开需要{}来区分
echo "my name is ${name}."
(3)只读变量
shell中支持只读变量的定义。
age=14readonly age
如果在下文再对age赋值则运行时会出错。
(4)变量的删除
unset variable_name
变量被删除后不能再次使用;但是unset命令不能删除只读变量。
运行shell时,会同时存在三种变量:
1) 局部变量
局部变量在脚本或命令中定义,仅在当前shell实例中有效,其他shell启动的程序不能访问局部变量。
2) 环境变量
所有的程序,包括shell启动的程序,都能访问环境变量,有些程序需要环境变量来保证其正常运行。必要的时候shell脚本也可以定义环境变量。
3) shell变量
shell变量是由shell程序设置的特殊变量。shell变量中有一部分是环境变量,有一部分是局部变量,这些变量保证了shell的正常运行
特殊变量列表
变量 含义
# 传递给脚本或函数的参数个数。* 传递给脚本或函数的所有参数。
shell数组
bash支持一维数组,没有限定数组的大小。用空格区分数组元素
array_name(v1 v2 ...vn)
也可以写成如下形式:
array_name=(v1v2v3v4)
array_name[0]=value0array_name[1]=value1array_name[2]=value2
获取数组的长度
获取数组长度的方法与获取字符串长度的方法相同,例如:
# 取得数组元素的个数length=${#array_name[@]}# 或者length=${#array_name[*]}# 取得数组单个元素的长度lengthn=${#array_name[n]}
shell if-else语句
与C语言相比shell中的if-else中添加了then,then后面的语句将会被执行,此外每一个if还必须要一个fi来闭合如:
#!/bin/sha=10b=20if [ $a == $b ]then echo "a is equal to b"fiif [ $a != $b ]then echo "a is not equal to b"fi
同理if-else语句也一样:
#!/bin/sha=10b=20if [ $a == $b ]then echo "a is equal to b"else echo "a is not equal to b"fi
if … elif … fi 语句
#!/bin/sha=10b=20if [ $a == $b ]then echo "a is equal to b"elif [ $a -gt $b ]then echo "a is greater than b"elif [ $a -lt $b ]then echo "a is less than b"else echo "None of the condition met"fi
shell中的case-esac
case … esac 与其他语言中的 switch … case 语句类似,是一种多分枝选择结构。
用法如下:
echo 'Input a number between 1 to 4'echo 'Your number is:\c'read aNumcase $aNum in 1) echo 'You select 1' ;; 2) echo 'You select 2' ;; 3) echo 'You select 3' ;; 4) echo 'You select 4' ;; *) echo 'You do not select a number between 1 to 4' ;;esac //与if语句相似,需要用esac语句将其闭合
shell中的for循环
shell中的for循环格式为:
for loop in 1 2 3 4 5do echo "The value is: $loop"done
显示主目录下.bash开头的文件:
#!/bin/bashfor FILE in $HOME/.bash*do echo $FILEdone
shell- while循环
COUNTER=0while [ $COUNTER -lt 5 ]do COUNTER='expr $COUNTER+1' echo $COUNTERdone
shell中的until循环
#!/bin/basha=0until [ ! $a -lt 10 ]do echo $a a=`expr $a + 1`done
- [Bash Shell] Shell学习笔记
- [Bash Shell] Shell学习笔记
- shell shell学习笔记001--什么是shell?
- shell学习笔记【原创】
- shell学习笔记2
- shell(bash)学习笔记
- Shell学习笔记
- shell学习笔记《一》
- Unix shell学习笔记
- shell编程学习笔记
- shell学习笔记
- Linux Shell学习笔记
- Shell学习笔记
- Power Shell 学习笔记
- Shell 编程-学习笔记
- shell编程学习笔记
- Shell学习笔记
- shell 学习笔记
- Internet概念与TCP/ IP分层模型
- chromium中FTP网络资源的加载
- 1093. Count PAT's (25)
- 硬连接(hard link)和软连接(symbolic link)
- 变量.注意内部链接全局变量(也声明使用静态关键字)
- Shell学习笔记
- 欢迎中央巡视组进驻北京大学,帮助领导改变官僚校风,有错必纠
- cocos creator触摸事件 cc.node.EventType
- CTF常见php猥琐小段代码审计
- PAT A1099. Build A Binary Search Tree (30)
- http请求获取json字符串的方法
- 爬取抗压吧的《猪狗恩仇录》
- C++算法题_第一周
- Dubbo|Dubbox 源码解读略析