------------------------------ 以下是fun.sh文件 -------------------------------------
#!/bin/bash
sed -i 's/\r//' $0 #替换本文件的\r为空,因为我是在window下编写linux上执行的
function max(){
if [ $# -ne 2 ];then
echo "必须两个参数,调用方法:max p1 p2"
else
if [ $1 -gt $2 ];then
return $1
else
return $2
fi
fi
}
------------------------------ 以下是main.sh文件 -------------------------------------
#!/bin/bash
sed -i 's/\r//' $0 #替换本文件的\r为空,转window换行符\n\r为linux换行符\n
# $0:第0个参数即当前程序名称,$$当前进程号
# $1:第1个参数,$2...以此类推
# $@、$*:所有的参数列表
# $#:参数个数
# ${!#}:最后一个参数
# $( pwd ):调用pwd命令,或者使用`pwd`
# read -p "input" name :使用name接受输入
# ()由子shell完成,{}由当前shell完成
# ${str/old/new}:new替换第一个old,${str//old/new}:new替换所有old
# test -e file等价[ -e file]都是判断file是否存在,再使用$?查询上次执行结果
# declare -i s:强制把变量s当作int类型运算
# 文件测试:-e存在,-d目录,-f文件,-r可读,-w可写,-x可执行,
# 文件测试:-L符号连接,-c字符设备,-b块设备,-s文件非空
# 逻辑条件:-a and,-o or,!取反
# 数值判断:-eq,-ne,-gt,-ge,-le,-lt
# 字符串判断:=相等,!=不等,-z空串,-n非空
# 控制语句:if [ ];then else elif fi 或 for(());do done 或 for i in list;do done
# 控制语句:while [ ];do done 或 until [];do done |
# 函数调用:函数名 参数1 参数2...,对应的接收参数$0,$1,$2...,return结果使用$?查询
# source导入其他shell脚本文件,source fun.sh导入fun.sh脚本文件
echo "last params is : ${!#}"
source fun.sh #导入fun.sh脚本
max 100 50 #调用fun.sh脚本的max方法
en=$? #使用$?查询上一次的执行结果,即调用max方法的结果
echo "max=$en"
---最后命令行执行:bash main.sh 即可测试
---遇到Window换行符报错时也可以手动 sed -i 's/\r//' bash main.sh 处理掉window换行符再执行bash main.sh
shell文件判断参数:
-e filename 如果 filename存在,则为真
-d filename 如果 filename为目录,则为真
-f filename 如果 filename为常规文件,则为真
-L filename 如果 filename为符号链接,则为真
-r filename 如果 filename可读,则为真
-w filename 如果 filename可写,则为真
-x filename 如果 filename可执行,则为真
-s filename 如果文件长度不为0,则为真
-h filename 如果文件是软链接,则为真
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
2019-08-13 Android开发开源一款结合databinding写的用于RecyclerView的简单高效MultiTypeAdapter