Shell语法
1 变量
#!/bin/bash
#File by louis
#打印
echo "louis"
#声明变量
A=10
echo $A
#打印当前路径
echo $PWD
echo "#######"
#打印第一个参数
echo "当前程序的名称" $0
echo "第1个参数" $1
echo "第2个参数" $2
#打印输入参数的个数
echo "输入参数的个数" $#
#打印所有的输入参数
echo "所有的输入参数" $*
# 以上代码执行结果
$ ./demo.sh 1 2
louis
10
/home/louis/root/shell
#######
当前程序的名称 ./demo.sh
第1个参数 1
第2个参数 2
输入参数的个数 2
所有的输入参数 1 2
| 形式 | 说明 |
|---|---|
| $0 | 当前程序的名称 |
| $n | 程序的输入参数 n:第n个参数 |
| $* | 所有的输入参数 |
| $# | 输入参数的个数 |
| $? | 命令执行的状态,一般返回0,代表成功 |
2 循环
2.1 循环中用到的命令
2.1.1 seq:产生数字集合命令
# seq:产生数字集合命令;
$ seq 1 5
1
2
3
4
5
2.1.2 expr两数相加
#expr:两个数相加
# + 号两边要有空格
$ expr 1 + 2
3
2.1.3 tar打包
# 打包当前目录下的文件
$ tar czf all.tgz *
2.1.4 find查找
# 查找当前目录下以.sh结尾的文件
$ find . -name "*.sh"
./demo.sh
./number.sh
2.2 循环练习
2.2.1 for循环
#!/bin/bash
#seq:产生数字集合命令
#``:反引号,取出命令的结果
for i in `seq 1 15`
do
echo "数字 i = $i"
done
#累加
j=0
for((i=0; i<=100; i++))
do
j=`expr $i + $j`
done
echo "累加和为:$j"
#for循环压缩指定文件
for i in `find . -name "*.sh"`
do
tar -czf sh.tgz $i
done
2.2.2 while循环
i=0
while((i<100))
do
echo "数字 $i"
i=`expr $i + 1`
done
#-lt:小于
i=0
while [[ $i -lt 100 ]]
do
echo "数字 $i"
i=`expr $i + 1`
done
#while循环打印文件
while read line
do
echo $line
done</home/louis/root/shell/text.txt
3 if语句
3.1 if语句格式
##################第一种#####################
if(表达式)
fi
##################第二种#####################
if(表达式);then
语句
else
语句
fi
#!/bin/bash
num1=100
num2=200
if(($num1>$num2));then
echo "num1>num2"
else
echo "num1<num2"
fi
3.2 逻辑运算符
| 符号 | 含义 |
|---|---|
| -f | 判断文件是否存在 |
| -d | 判断目录是否存在 |
| -eq | 等于 |
| -ne | 不等于 |
| -le | 小于 |
| -ge | 大于等于 |
| -a | 双方都成立 |
| -o | 单方成立 |
#!/bin/bash
#判断文件是否存在
#空格不能少
if [ ! -d /home/louis/root/shell/dir ]; then
mkdir -p /home/louis/root/shell/dir
else
echo "/home/louis/root/shell/dir 已存在"
fi
4 算数运算
算数运算符
关系运算符
布尔运算符
字符串运算符
文件测试运算符
4.1 算数运算符
| 运算符 | 说明 | 举例 |
|---|---|---|
| + | 加法 | expr $a + $b |
| - | 减法 | expr $a - $b |
| * | 乘法 | expr $a \* $b |
| / | 除法 | expr $a / $b |
| % | 取余 | expr $a % $b |
| = | 赋值 | a=$b 把变量b的值赋给a |
| == | 相等 | 比较两个数字 |
| != | 不相等 | 比较两个数字 |
注意:条件表达式要放在方括号之间,并且要有空格,例如:[$a==$b]错误,必须写成**[ $a == $b ]**。
4.2 关系运算符
| 运算符 | 说明 |
|---|---|
| -eq | 相等返回true |
| -ne | 不相等返回true |
| -gt | 左边大于右边返回true |
| -lt | 左边小于右边返回true |
| -ge | 左边大于右边返回true |
| -le | 左边小于右边返回true |
4.3 布尔运算符
| 运算符 | 说明 |
|---|---|
| ! | 非运算 |
| -o | 或运算 |
| -a | 与运算 |
4.4 逻辑运算符
| 运算符 | 说明 |
|---|---|
| && | 逻辑的AND |
| || | 逻辑的OR |
4.5 字符串运算符
| 运算符 | 说明 |
|---|---|
| == | 左右字符串相等返回true |
| != | 左右字符串不相等返回true |
| -z | 字符串长度为0返回true |
| -n | 字符串长度不为0返回true |
| $ | 字符串不为空返回true |
4.6 算数运算方式
使用$(())
$ a=$(( 1 + 2 ))
$ echo $a
3
使用$[]
$ a=$[ 1 + 4 ]
$ echo $a
5
使用let命令
a=10
$ let a=a+1
$ echo $a
11
使用expr外部程式
$ a=`expr 1 + 5`
$ echo $a
6
5 重定向
输入重定向:<
输出重定向:>
$ echo hello > file.txt
$ cat file.txt
hello
6 函数
第一种方式:
name()
{
command;
command2;
}
#!/bin/bash
test(){
echo "test函数"
}
test
testArgs(){
echo "$1 $2"
}
testArgs "a" "b"
第二种方式:
[ function ] funname [()]
{
action;
[return int;]
}
本文详细介绍了Shell脚本的基础知识,包括变量声明与使用、循环结构(for与while)、条件语句(if),以及算数运算等内容。通过实际示例,如变量赋值、循环遍历、条件判断和算数计算,帮助读者快速掌握Shell脚本的基本语法。
8432

被折叠的 条评论
为什么被折叠?



