shell编程 (1) —— 基础

网友投稿 672 2022-09-06

shell编程 (1) —— 基础

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小时内删除侵权内容。

上一篇:ANSI C (1) —— 基础
下一篇:杂记 (2) —— linux and C
相关文章

 发表评论

暂时没有评论,来抢沙发吧~