shell script基础一

第一行写入:

#!/bin/bash

输出:

echo "hello,world"

echo 'hello,world'

变量:

a=2

b=3

中间不能有空格

echo a+b

结果输出就是a+b,因为在运行时会把a+b看做是字符串。

所以要计算a+b。应该是 echo $((a+b)) 输出结果就是5了。(第一种)

第二种计算方式:let s=$a+$b, echo s,结果输出就是5

第三种计算方式:

declare -i s

s=$a+$b

echo s 结果输出就是5。第二种是让字符串进行计算给予s,第三种是声明(declare)一个int(-i)类型的s,进行计算存入s中。$是从变量中取出数值的字符。

任意数进行加法运算:

echo 'please input first number:'

read a

echo 'please inpu second number:'

read b

let s=$a+$b

echo "result is$s"

echo "result is"$s

echo 'result is$s'

echo 'result is'$s


建立并进行编译blog_CSDN.sh,给予拥有者执行权限,查看权限,输入内容,输出结果对应上面的代码。

知识点1:从键盘输入数值,要用到read,用a接收,就是read a  同样也可以同时输入多个数,那就是read a b这样的话在键盘输入的时候要用空格分开a b。比如3空格4。

2:计算输出的结果不同:双引号“”有保留变量的作用,所以写内外都一样,单引号‘’没有保留变量的作用,所以必须写外面,写里面就被认为是字符串。

函数:

sum()

{

x=$1

y=$2

let s=$x+$y

return $s

}

echo "please input two number:"

read a b

sum $a $b

k=$?

echo "result is $k"


知识点1:函数要写在主调函数上面

2:调用函数传参数sum $a $b,中间必须带空格,如果没有参数调函数直接写sum

3:接收参数x=$1     y=$2 表示x形参接收a,y同样

4:返回值:k=$? 用k接收返回值,?表示任意类型。

分支结构(多条件)

数值类型:

第一种写法:

if [ "$a" -eq "$b" ];then

elif [ "$a" -gt "$b" ];then

elif [ "$a" -lt "$b" ];then

else

fi

第二种写法:

if (( "$a" == "$b" ));then

elif (( "$a" > "$b" ));then

elif (( "$a" < "$b" ));then

else

fi

字符类型:

if [ "$m" == "+" ];then

elif [ "$m" == "-" ];then

elif [ "$m" == "*" ];then

elif [ "$m" == "/" ];then

else

fi

这几种类型相互匹配,写法就是这样,千万千万千万千千万记住空格,眼睛睁大了看清楚空格的位置,必须有!!!!还有就是结尾必须以fi结尾下面是解释。

shell运算符比较:

整数比较
-eq 等于,:if [ "$a" -eq "$b" ]
-ne
不等于,:if [ "$a" -ne "$b" ]-gt 大于,:if [ "$a" -gt "$b" ]
-ge
大于等于,:if [ "$a" -ge "$b" ]-lt 小于,:if [ "$a" -lt "$b" ]
-le
小于等于,:if [ "$a" -le "$b" ]

< 小于(需要双括号),:(("$a" < "$b"))
< =
小于等于(需要双括号),:(("$a" <= "$b"))> 大于(需要双括号),:(("$a" > "$b"))
> =
大于等于(需要双括号),:(("$a" >= "$b"))

字符串比较

= 等于,:if [ "$a" = "$b" ]
==
等于,:if [ "$a" == "$b" ],=
等价 


逻辑表达符号:-o、-a分别表示逻辑或、逻辑与

while 循环:

while [条件表达式]

do

语句

done

case in语句:

case $a in

条件表达式1)

语句1

;;

条件表达式2)

语句2

;;

条件表达式3)

语句3

;;

*)

语句4

;;

esac

*表示其他,每一句完后用;;表示结束。esac 表示结尾!

一些其它的知识:

1:判断是不是目录用-d

if [ -d "$mydir" ]

2:判断是不是文件 -f

if [ -f "$myfile" ]

3:数据流重定向:

echo “hello” >> /tmp/log

4:判断当前用户 $UID、$USER

都必须大写echo $UID 结果是0说明是root,同样user是root那也是root用户

5:查找当前登录用户是谁或者组名字,用搜索或者搜索加管道值

搜索加管道值:grep tester /etc/passwd | cut -d : -f 1

从配置文件etc下的用户信息passwd中搜索tester用户,通过管道值,用:分割字符串,取第一个字符串。如果输出结果是tester说明用户存在,如果什么都没有,说明没有次用户

6:插入内容语句

sed -i '10acharudeneirong' ./.bash_profile

10a表示插入十行后

charudeneirong表示插入的内容

-i表示进入编辑模式

./.bash_profile表示插入当前路径下的.bash_profile中


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值