微前端架构如何改变企业的开发模式与效率提升
672
2022-09-06
shell编程 (1) —— 基础
关于bash
bash的内部命令:shell在启动时就调入内存。 bash的外部命令:使用时才从硬盘中读入内存。
命令通配符: ? : 匹配任意一个字符 [] : 匹配括号中的任意单字符 * : 匹配任何的字符或者字符串,包括空字符串
shell程序
shell程序本质是普通文本文件,加上可执行权限后可以让shell执行文本中的程序。
#! shell compiler
t.sh:
#!/bin/bash#t.shecho "hello Linux, "echo "I love you"
$ chmod +x t.sh$ ./t.shhello Linux, I
shell语言是一种解释型语言, shell变量有:局部变量、环境变量、位置变量。 shell变量没有数据类型,变量赋值之后只需要加上$即可使用,不带空格的字符串可以不加引号。
环境变量的定义:export var=value 输出:echo $var (重启失效) 在/etc/profile中可以定义环境变量
位置变量:在shell程序运行时传入的参数 $n n:1–9
$ cat dex.sh#!/bin/bash#location varecho $1 echo $2
shell算术运算符中的**代表两个变量的幂运算。
$ cat cal.sh #/bin/bash#calculatea=12echo $[$a**$1]b=$[$a*$1]echo $b$ ./cal.sh 214424
echo中的输出字符 \c:末尾加上\c表示这一行输出完毕以后不换行
read命令可以读取标准输入到一个变量。
$ read varthis is a read test$ echo $varthis is a read test$ read var1 var2 var3this is a happy day$ echo $var1this$ echo $var2is$ echo $var3
commond 1 > filename 标准输出重定向到文件中 commond 2 > filename 标准输出的错误重定向到文件中 commond > filename 2>&1 标准输出和标准错误重定向到文件中 $ ls > doc2 2>&1 command < filename1 > filename2 将file1作为标准输入,file2作为标准输出
双引号和单引号的区别:
$ echo "$var1"this$ echo '$var1'$var1$ echo "hello \"linux\""hello "linux"$ echo 'hello \"linux\"'hello \"linux\"
test测试命令
文件状态测试:指的是对文件的权限、有无、属性、类型等内容进行判断数值比较
symbol | effect |
eq | equal 相等 |
ne | not eqaul 不等 |
le | less or equal 小于等于 |
ge | greater or equal 大于等于 |
gt | greater than 大于 |
lt | less than 小于 |
* 逻辑测试
symbol | effect |
a | and 逻辑与 |
o | or 逻辑或 |
! | 非 逻辑否 |
* 字符串比较
symbol | effect |
= | 相等 |
!= | 不等 |
-z | 空串 |
-n | 非空 |
流程控制
if 语句
格式:
if condition1then command1fiif condition1then command1elif condition2then command2else command3fi
for循环
格式:
for var in listdocommand1command2done
until循环——直到条件成真的时候才停下来。 格式:
until condition do commond1 done
while循环
while conditiondo command
练习
写一个判断文件读,写,可执行的权限shell脚本
#!/bin/bash#rxwif test -r $1then echo this file can be read.else echo this file can not be read.fiif test -w $1then echo can be wrote.else echo can not be wrote.fiif test -x $1then echo can be executed.else echo can not be executed.fi
打印当前目录下所有的shell脚本文件
#!/bin/bash#ls sh filefiles=`ls *.sh`for file in $files do echo $file done
每0.5秒执行一次ls命令
$ cat ls.sh#!/bin/bash#ls for 0.5sfor i in {1..10} do ls usleep 500000 #or : sleep 0.5 done
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~