Lichord

学习笔记

0%

shell编程简单语法

shell script:将一堆linux命令集放在一个文件中

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#创建test.sh文件,输入
a=10
b=3
c=`expr $a + $b`
echo $c
echo "Hello"
#注释用#号

#表示:定义变量a=10,b=3,expr用于计算表达式,输出c,输出Hello

#注意:等于号前后不可以有空格,运算符前后必须有空格,输出字符串可以不加"",使用变量的时候要加$符,`不是单引号,而是.md文件插入代码那个符号

#乘法的话:c=`expr $a * $b`会报语法错,*会被认为是正则表达式,正确写法:c=`expr $a \* $b`使用\转义

# ()也需要转义\ (\)

# 执行shell文件:sh test.sh

判断符号

1
2
3
4
5
> -gt     //greater than
< -lt //less than
<= -le //less equal
>= -ge
= -eq

条件判断:

判断a b中的最大值

1
2
3
4
5
6
7
8
a=10
b=3
if [ $a -gt $b ]
then
echo $a
else
echo $b
fi

循环语句:

1
2
3
4
5
6
7
8
9
10
11
for x in 1 2 3 4 5 6 7 8 9
do
echo $x
done

x=1
while [ $x -le 10 ]
do
echo $x
x=`expr $x + 1`
done

字符串:

1
2
3
4
5
6
7
8
9
10
11
a="hello"
b="world"
echo $a $b
#输出为hello world 空格也被输出

#输入a b
read a
read b
c=`expr $a + $b`
echo $a + $b = $c
#控制台输入1 2 ,输出则为1 + 2 = 3

比较字符串用一个等于号就行
不等用!=

1
2
3
4
5
6
7
8
password="hello123"
read user
if [ $user = $password ]
then
echo "密码正确"
else
echo 密码错误
fi

字符串拼接:

1
2
3
str1="hello"
str2="world"
str3="$str1 + $str2"

判断字符串是否长度为0:

1
2
3
4
5
6
7
8
9
# -z zero    是0
# -n not zero 不是0
str1=""
if [ -z $str1 ]
then
echo "字符串长度为0"
else
echo "字符串长度不为0"
fi

数组:

传统shell脚本不支持数组,但bash可以运行数组

执行命令:bash test.sh

1
2
3
4
5
6
7
8
9
10
arr=(7 8 9 10)
echo $arr
#输出arr下标为0的内容
echo ${arr[1]}
#输出arr下标为1的内容

for i in ${arr[@]}
do
echo $i
done

全局变量

1
2
3
4
5
6
7
#在命令行中:
#输出用户:
echo $USER
#输出用户主目录
echo $HOME
#输出环境变量
echo $PATH

添加环境变量

Linux下的环境变量用:分开,不同于windows
创建一个c程序

1
2
3
vim example.c
gcc example.c -o example
./example

要想在其他文件夹下也可以执行这个文件,就需要将example所在目录设置为全局变量
在原来的PATH下增加新变量

1
PATH~$PATH:/home/ubuntu/workspace