shell脚本编写快速入门

Shell 教程 | 菜鸟教程

快速入门shell脚本编写(一)_hnulwt的博客-CSDN博客_shell脚本编写

linux+sh+路径拼接,Shell字符串拼接(连接、合并)_由宓的博客-CSDN博客

shell脚本----if(数字条件,字符串条件,字符串为空)_知耻而后勇的蜗牛的博客-CSDN博客_bash 字符串对比

Shell 传递参数 | 菜鸟教程

Linux shell 中获取当前目录的方法_sayyy的博客-CSDN博客_shell当前目录

linux shell 中判断字符串为空的正确方法 - katago - 博客园

shell脚本报错:"[: =: unary operator expected"_viclee108的博客-CSDN博客

在 Shell 脚本中调用另一个 Shell 脚本的三种方式_liuchengxu_的博客-CSDN博客_shell脚本中执行另一个脚本

CRTDIR=$(pwd)#在shell中也可以使用pwd来获取当前目录,并赋值给变量。

变量定义:

例子:varibleName="value"

首先有一点,变量名和等号之间不能有空格,这点千万注意,因为我们平时写其他程序的时候可能已经养成了这种习惯,在shell这里需要注意这个习惯,

然后要知道的一些变量命名规则:

1,首个字符必须为字母(a-z,A-Z)。

2,中间不能有空格,可以使用下划线(_)。

3,不能使用标点符号。

4,不能使用bash里的关键字(可用help命令查看保留关键字)。

定义好变量我们就要开始使用变量了,如何使用变量,需要在自己定义的变量名上加上大括号,然后最前面写上$字符,例如

who="dog"

echo who is ${who}?

=================================

shell中一些比较特殊的变量:

特殊变量              含义
$0                 当前脚本的文件名
$n                传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$#                 传递给脚本或函数的参数个数。
$*                 传递给脚本或函数的所有参数。
$@               传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。
$?                 上个命令的退出状态,或函数的返回值。
$$                 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。

=========脚本文件test.sh========

#! /bin/bash

value=`expr  2  +  2` #在第二行中注意赋值地方是没有空格的,而在计算表达式的时候之间是有空格的。 expr 2 + 2表达式被 ` 号括起来。注意 · 号并不是单引号,而是键盘上Esc下面的符号

echo "Total value :${value}"      

a=10
b=20

value=`expr 2 + 2`
echo "Total value :${value}"

value=`expr $a \* $b`
echo "a * b : ${value}"

value=`expr $b % $a`
echo "a % b : ${value}"

if [ $a == $b ]                #条件表达式要放在方括号之间,并且要有空格,例如 [$a==$b] 是错误的,必须写成 [ $a == $b ]
then
echo "a equals b"
fi

if [ $a != $b ]
then
echo "a not equals b"
fi

#######

if [ $a -eq $b ]
then
echo "$a -eq $b"
else
echo "a not equals b "
fi

if [ $a -gt $b ]
then
echo "$a gt $b"
else
echo "a not greater than b"
fi

if [ $a -le $b ]
then
echo "$a le $b"
else
echo "a not less or equal to b"
fi

gt=greater than

ge=greater &equal

lt=little than

le=little &equal


关系运算符列表

运算符

说明

举例

-eq 检测两个数是否相等,相等返回 true [ $a -eq $b ] 返回 true。
-ne 检测两个数是否相等,不相等返回 true [ $a -ne $b ] 返回 true。
-gt 检测左边的数是否大于右边的,如果是,则返回 true [ $a -gt $b ] 返回 false。
-lt 检测左边的数是否小于右边的,如果是,则返回 true [ $a -lt $b ] 返回 true。
-ge 检测左边的数是否大等于右边的,如果是,则返回 true [ $a -ge $b ] 返回 false。
-le 检测左边的数是否小于等于右边的,如果是,则返回 true [ $a -le $b ] 返回 true。

布尔运算符

先大致熟悉一下布尔相关的三个运算符

! 非运算

-o 或运算(or)

-a 与运算(and)


字符串 和 字符串运算符

提到了字符串,先讲讲shell中的字符串,他大概是shell中最常用的数据类型了(貌似除了他也没有其他类型了),先来看看字符串的表示方式

字符串可以用单引号,也可以用双引号,也可以不用引号

单引号

俩点需要注意:

单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的;

单引号字串中不能出现单引号(对单引号使用转义符后也不行)

双引号

双引号基本没有什么限制,一般常用双引号,双引号里面可以使用转义字符,可以带入变量

例:

1 animal="dog"
2 say="Hi, \"$animal\""
3
4 echo $say
运行结果:
$ sh teststr.sh
Hi, "dog"

可以看出俩个冒号被转义了,animal代表的字符串被代入新的句子中。

这里再说有关于字符串的几个方法

1,获取字符串长度的方法
1 animal="dog"
2
3 echo ${#animal}
输出结果:3 (这里不能用echo $#animal ,你可以测试一下,输出结果就不对喔,这样$#会代表 传递给脚本或函数的参数个数,所以会输出:0animal)
2,查找字符串

1 animal="dog, pig, cat, lion and so on"
2
3 echo `expr index "$animal" cat`

输出结果:11(注意这里第三行,expr 和 cat之后有特殊符号,该符号不是单引号,是Esc键下面那个)
 

shell注释

shell单行注释很简单,只需在每行行首增加#,用EOF分界符来多行注释,如下:

<

......//此段全被注释掉

EOF

if判断语句

if ...

then ...

else if ...

then ...

fi

fi

或者中间的else if ... fi 被换为elif

5 if [ $var == test1 ]

6 then

7 echo "1"

8 elif [ $var == test ]

9 then

10 echo "2"

11 fi

循环语句

1 #! /bin/sh

2

3 for (( i=0; i<10; i++))

4 do echo $i

5 done

注意如下几点:

1,for循环要用双括号 括起来,即: ((...;...;...;))

2,do 和 done是必不可少的

while循环

结构是:

while ...

do ...

done

数组

了解一下shell数组

表示方式:

方式一:arraynum=(1 2 3 4 5)

方式二:

arraynum[0]=0

arraynum[1]=1

arraynum[2]=2

获取数组的长度的方式:${#arraynum[@]} (arraynum[@]实际上arraynum的列表,计数符号我们在前面讲过,所以这个表达式不难理解)
 

for in 语句

结构如下:

for 变量名 in 列表
do ...
done

接着我们来看如何遍历输出数组

1 #! /bin/sh
2
3 arraynum[0]=a
4 arraynum[1]=b
5 arraynum[2]=c
6
7 for var in ${arraynum[@]}
8 do
9 echo ${var}
10 done
11
12 echo ${#arraynum[@]}
13 echo ${arraynum[@]}

shell 字符串不为空

#!/bin/sh

STRING=

if [ -z "$STRING" ]; then
    echo "STRING is empty"
fi

if [ -n "$STRING" ]; then
    echo "STRING is not empty"
fi

root@james-desktop:~# ./zerostring.sh
STRING is empty

===========================================

chmod +x ./test.sh  #使脚本具有执行权限
./test.sh  #执行脚本

你可能感兴趣的:(软件,linux,bash,shell)