XiShiYuYuan's Blogs  
其实,我只会打游戏。。。

Shell简介

shell脚本:一堆命令的集合

shell脚本文件 扩展名为 .sh

shell脚本第一行一定要为:#!/bin/bash 表示使用bash

vi my.sh 创建shell脚本文件 执行前需要给脚本文件执行权限 :chmod 777 my.sh 后才可执行

交互式脚本

通过read读取用户输入的东西

#!/bin/bash
echo "please input name:"
read name                #用read读取,将读到的东西赋值给name变量
echo "your name:" $name  #使用变量的值是不需要括括号
#!/bin/bash
read -p "input your age and height:" age height #一次性读取两个值 -p在输入前可打印提示信息
echo "your age=$age, your height=$height"  #在shell使用变量时不需要括括号

数值计算

shell仅支持整形,数值计算使用 $(( 表达式 ))

#!/bin/bash
echo "please input two int num:"
read -p "first num" first
read -p "second num" second
total=$(($first+$second))         #此处的=两边不能有空格
echo "$first+$second=$total"               #使用变量时不需要括括号

test命令

test命令用于查看文件是否存在、权限等信息,可以进行数值,字符,文件三方面的测试。

&& 和 || 命令:cmd1 && cmd2 当cmd1执行完并且正确,那么cmd2开始执行,如果cmd1执行完毕错误,那么cmd2不执行。 cmd1 || cmd2 当cmd1执行完并且正确,那么cmd2不执行,反之cmd2执行。

#!/bin/bash
echo "please input file name:"
read -p "file name" filename
test -e $filename && echo "$filename is exist" || echo "$filename is not exist"
#使用test -e  查看某个文件是否存在
test $firststr == $secondstr && echo "$firststr等于$secondstr" || echo "$firststr不等于$secondstr"     #测试两个字符串是否相等

中括号 [ ] 判断符

[ ]里只能输入 == 或 !=

​ ↓要有空格隔开 要有空格隔开↓ 且在 [ ] 内无论是变量还是字符串都要用 " " 引起来

[ "$firststr" == "$secondstr" ] && echo "$firststr等于$secondstr" || echo "$firststr不等于$secondstr" 

默认参数

$0-$n,表示shell脚本的参数,包括shell脚本命令本身,shlle脚本命令本身为$0

$#:#表示最后一个参数的标号。

$@:表$1、​$2、$3.....

$0 就是shell脚本的名字;

$# 是共有多少个参数

$@ 整个参数的内容

$1 $2 第一个参数、第二个参数

条件判断

#!/bin/bash
read -p "please input(Y/N)" value
if [ "$value" == "Y" ] || [ "$value" == "y" ]; then
	echo "your input is Y"
	exit 0
fi

if [ "$value" == "N" ] || [ "$value" == "n" ]; then
	echo "your input is N"
	exit 0
fi
if 条件判断; then 
	判断成立要做的事情
fi
#if then else语句写法:
if 条件判断; then
	条件判断成立要做的事情
else
	条件判断不成立要做的事情
fi
#或者这样写:
if 条件判断; then
	条件判断成立要做的事情
elif [条件判断]; then
	条件判断成立要做的事情
else
	条件判断不成立要做的事情
fi
#!/bin/bash
read -p "please input(Y/N)" value
if [ "$value" == "Y" ] || [ "$value" == "y" ]; then
	echo "your input is Y"
	#exit 0
elif [ "$value" == "N" ] || [ "$value" == "n" ]; then
	echo "your input is N"
	#exit 0
else
	echo "你这输入的是啥玩意??"
fi

最后还有case语句,写法如下:

case $变量 in

“第1个变量内容”)       //这里注意括号只有一半

​	程序段

​	;;                            //这两个分号一定要写,表示该程序块结束!!

“第2个变量内容”)

​	程序段

​	;;

“第n个变量内容”)

​	程序段

​	;;

esac
#!/bin/bash
case $1 in
	"a")
		echo "param is:a"
		;;
	"b")
		echo "param is:b"
		;;
	*)			#这里的通配符*不能用引号引住
		echo "其他的玩意"
		;;
esac

运行时 ./my.sh a 需要加入参数

shell脚本函数

shell脚本支持自定义函数:

function 函数名(){

​ //函数代码

}

#!/bin/bash
function help(){
	echo "this is help cmd"
}
function close(){
	echo "this is close cmd"
}
case $1 in
	"-h")
		help        #调用函数直接写函数名
		;;
	"-c")
		close
		;;
esac

函数传参:

#!/bin/bash
print(){
	echo "param 1:$1"
	echo "param 2:$2"
}
print a b        #函数传参直接在后面跟着

shell循环

while [条件]

do

​		//循环代码块

done



until [条件]        //条件不成立时进入循环    

do

​		//循环代码块

done



for 变量 in con1 con2 con3     //变量在什么范围里

do

​		//循环代码块

done



for ((i=0; i<=10; i++))    //注意有两层括号

do

​		//循环代码块

done
posted on   惜时与缘  阅读(48)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
 
点击右上角即可分享
微信分享提示