Shell语法

1 篇文章 0 订阅

编写shell脚本第一步,命名是以xx.sh结尾,但是编写内容的第一行一定要加上

#!/bin/bash

类似于java类中的第一行一定是包名。#代表引入/bin/bash。除了第一行的#,下面再使用#都是代表注释的意思。

#!/bin/bash
echo “demo”

运行该脚本,显示没有权限

$./demo.sh
-bash:./demo.sh:permission denied

因此需要给与运行权限

$chmod 777 demo.sh
$./demo.sh
demo

另外通过:

$/bin/bash demo.sh
demo

这种情况下不需要给与权限。

声明变量

局部变量声明与使用
#!/bin/bash
A=20
echo $A
$./demo.sh
20
环境变量
#!/bin/bash
echo $PWD
$./dmeo.sh
/root

$PWD代表当前路径

输入参数

在这里插入图片描述

#!/bin/bash
echo $0
echo $1
echo $2
echo "this \$? is $?"
echo "this \* is $*"
echo "this \# is $#"
$./demo.sh test1 test2 test3
./demo.sh
test1
test2
this $? is 0
this \* is test1 test2 test3
this \# is 3

循环语句for

for 变量 in 字符串
do
语句
done

#!/bin/bash
for i in `seq 1 15`
do
        echo "数字$i"
done

j=0
for((i=0;i<=100;i++))
do
        j=`expr $i + $j`
done
echo $j        
$./numner.sh
数字1
数字2
数字3
数字4
数字5
数字6
数字7
数字8
数字9
数字10
数字11
数字12
数字13
数字14
数字15
5050

循环语句while

while条件语句
do
语句
done

#!/bin/bash
i=0
while((i<100))
do
	echo "数字 $i"
	i=`expr $i + 1`
done
$./while.sh
数字 0
数字 1
数字 2
数字 3
数字 4
数字 5
...

上述脚本语句等价于

#!/bin/bash
i=0
while [[ $i -lt 100 ]]
do
	echo "数字 $i"
	i=`expr $i + 1`
done

使用while读取文件

#!/bin/bash
while read line
do
	echo $line	
done</root/text.txt

if语句

#!/bin/bash
NUM1=200
NUM2=300
if (( $NUM1>$NUM2));then
	echo "NUM1>NUM2"
else
	echo "NUM1<NUM2"
fi

辑运算符
在这里插入图片描述

#!/bin/bash
NUM1=200
NUM2=300
if (( $NUM1> $NUM2 )); then
	echo "NUM1>NUM2"
else
	echo "NUM1<NUM2"
fi
#!/bin/bash
FILE_PATH=/root/text.txt
if [ ! -f $FILE_PATH ]; then
	touch $FILE_PATH
else
	echo "文件已创建"
	cat  $FILE_PATH
fi

算数运算

在这里插入图片描述

算术运算符算数云算符###### 算数运算方式
1. 使用$(())
$r=$(( 5 + 5 ))
$echo $r
10
2. 使用$[]
$r=$[6+9]
$echo $r
15
3. 使用let命令
$n=19
$let n=n+1
$echo $n
20
4. 使用expr外部程式
$n=`expr 1 + 1 `
$echo $n
2
关系运算符

在这里插入图片描述
注意:关系运算符只支持数字,不支持字符串,除非字符串的值是数字。

布尔运算符在这里插入图片描述
#!/bin/bash
a=10
b=20
if [ $a!=$b ];then
	echo "$a != $b : a不等于b"
else
	echo "$a != $b : a等于b"
fi
$./bool.sh
10 != 20 : a等于b
逻辑运算符在这里插入图片描述
字符串运算符在这里插入图片描述
a="abc"
b="efg"
if [ $a = $b ];then
	echo "$a = $b : a等于b"
else
	echo "$a = $b : a不于b"
fi

if [ -z $a ];then
	echo "-z $a : 字符串长度为0 "
else
	echo "-z $a :字符串长度不为0 "
fi
$./bool.sh
abc = efg : a不于b
-z abc :字符串长度不为0 
文件测试运算符在这里插入图片描述

重定向

输入重定向

$ cat 0 < text.txt
hello world

0代表屏幕地址 < 和文件地址需要有空格

输出重定向

$echo hello world > file
$cat file
hello world

方法参数传递机制详解(函数编程)

函数格式在这里插入图片描述
无返回值的函数
#!/bin/bash
a=1
factorial(){
for((i=1;i<$1;i++))
do
	a=$[ $a * $i]
done
echo "$1的阶乘是 $a"
}

factorial 10
$./factorial.sh
10的阶乘是 362880
#!/bin/bash
a=1
factorial(){
for i in `seq $1`
do
	a=`expr $a \* $i`
done
echo "$1的阶乘是 $a"
}
factorial $1
$./factorial.sh 10
10的阶乘是 362880

注意:函数必须先定义在调用,自上而下

带返回值的函数
#!/bin/bash
fun(){
	read -p "请输入数值" num
	echo $[2*$num]
}
result=`fun`
echo "fun return value is:$result"
$ ./function.sh
请输入数值12
fun return value is:24

注意:如果返回的值是0-255之间的可以只用用return,但是大于255的只能用echo进行返回

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值