第一行写入:
#!/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中