游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

教大家简单的Shell脚本入门操作

  Shell脚本运作方式与解释型语言相当,如果有语言基础,学起Shell脚本就非常容易,但是Shell与常见的语言不同,一些常见的函数在Shell中需要组合一些命令得以实现工具推荐
  Shell似乎没有定制的IDE,这里推荐VSCode搭配对应的插件:shellman智能提示和自动补全,在插件页面有介绍常用代码片段的触发关键词,作者在Shellmanreborn中写到了Shellman诞生的故事,挺有趣的shellcheck语法静态检查工具,插件安装后需要本地安装shellcheck,参考shellcheckInstalling,MacOS可以使用brewinstallshellcheck,这样在写Shell的时候,语法有误的地方就会以波浪线的方式提示shellformat代码整理,Win快捷键:AltShiftF,MacOS快捷键:optionshiftFCodeRunner脚本运行,右键RunCode,Win快捷键:CtrlAltN,MacOS快捷键:controloptionN运行shell脚本
  新建脚本:test。sh!usrbinenvbash使用echo打印字符串或者变量echohelloworld
  可以用CodeRunner运行,就会输出:helloworld
  在Shell脚本的第一行一般会写!binbash这个是Shebang,!后面是解释器的绝对路径,脚本将用该解释器执行。还有一种写法是:!usrbinenvbash,usrbinenv是env命令的绝对路径,而env命令用于显示系统中已存在的环境变量,其中包含了PATH,会在PATH包含的目录依次找bash,常见的命令行解释器有:sh,bash,zsh(MacOS默认解释器)
  如果在Linux或类Unix下运行,有这么几种方式:先给脚本添加执行权限:chmodxtest。sh,然后运行脚本:。test。sh,这种方式执行会读取Shebang,用指定的解释器执行脚本shtest。sh,使用sh这个解释器执行脚本,当然也可以用其他方式执行,比如:bashtest。sh。与第一种方式相同,当前的shell是父进程,生成一个子shell进程(子进程会继承父进程的环境变量),在子shell中执行脚本,脚本执行完毕,退出的shell回到当前shellsource点命令方式:sourcetest。sh等效于。test。sh。source让脚本在当前shell执行,不生成新的子进程。使用source执行脚本,脚本中对于环境变量的修改会作用于当前shell,这就是为什么我们在修改了一些配置如:。bashrc,执行source。bashrc后配置就生效了exec方式:有需要先给脚本添加执行权限:chmodxtest。sh,执行exec。test。sh,也是让脚本在同一个进程上执行不生成新的子进程,与source的区别就是,在脚本执行完成后进程会被结束基础命令
  可以按照〔BashShell〕Shell学习笔记学习,这篇文章讲得非常详细,本篇博客也是在学习这篇文章后写下的获取输入
  使用read命令,从标准输入流(stdin)获取输入!usrbinenvbashreadvarecho{var}
  运行脚本,输入任意字符,回车确认,输入的值会赋值给变量var,并打印出该变量输出!usrbinenvbashvar1输出变量echo{var}输出字符串显示部分字符需要转义echohelloworldhelloworld换行使用e参数:使转义字符生效使用换行echoenewline
  也可以让shell输出不同颜色的字符,可以参考:shell脚本中echo显示内容带颜色!usrbinenvbashechoe33〔30m黑色字33〔0mechoe33〔31m红色字33〔0mechoe33〔32m绿色字33〔0mechoe33〔33m黄色字33〔0mechoe33〔34m蓝色字33〔0mechoe33〔35m紫色字33〔0mechoe33〔36m天蓝字33〔0mechoe33〔37m白色字33〔0m变量使用两边不能有空格varhelloworldnum100在引用变量时,这种方式可以,但是推荐下面一种echovar推荐在使用字符串变量时,在两侧加上双引号,否则如果变量字符串中存在空格,则字符串会被切分echovar如果涉及字符串拼接,可以在变量名两侧加上花括号echo变量为:{var}。将变量设置为只读,再次修改会报错readonlyvarvarwolrd删除变量,不能删除readonly修饰的变量unsetnum
  变量赋值时,变量名命名规则和其他语言类似,注意变量赋值时两边不能有空格
  使用时在变量名前加上,推荐所有的变量都使用{}的方式使用变量运算
  算术运算:Bash原生不支持数学运算,可以使用awk和expr
  注意乘号需要加上转义:,而且运算符两侧必须空格a10b3valexprabechoab:valvalexprabechoab:valvalexprabechoab:valvalexprbaechoba:valvalexprbaechoba:val执行命令
  ()与(反引号)都可以用于执行命令,并会将执行的结果返回,shellcheck推荐使用第一种()的方式!usrbinenvbashresultdateYmdecho{result}result(dateYmd)echo{result}运算符
  关系运算符只支持数字,如果字符串为数字也可以,关系运算符包括:
  运算符
  含义
  eq
  等于
  ne
  不等于
  gt
  大于
  lt
  小于
  ge
  大等于
  le
  小等于
  条件表达式必须放在〔〕中,并且〔的右侧,和〕的左侧必须留有空格
  布尔运算符列表:
  运算符
  含义
  !
  非
  o
  或(or)
  a
  与(and)!usrbinenvbasha10b3c1if〔{a}ne{b}〕thenecho相同elseecho不相同fiif〔{a}gt{b}a{b}gt{c}〕thenechoabbcfi
  其他常用判断:直接在〔〕中放字符串变量如〔{str}〕则就是判断str这个字符串是否非空f判断是否为普通文件,如:〔ffile〕d判断是否为文件夹,如:〔dfile〕字符串截取
  字符截取的格式:{string:start:length}
  索引从0开始,可以省略:length这样就截取到最后,注意空格要空在:后,否则可能提示:badsubstitution!usrbinenvbashstringhelloworldecho{string:1:3}ell截取到最后echo{string:1}elloworld数组!usrbinenvbash1。定义数组:使用括号声明,用空格分隔开,也可以换行隔开arr(123)strArr(firstsecond)2。读取数组:通过下标读取,下标从0开始计算echo{arr〔0〕}使用或者读取所有元素echo{arr〔〕}echo{arr〔〕}读取数组长度读取全部元素前面加上echo{arr〔〕}echo{arr〔〕}遍历下标for((i0;i{strArr〔〕};i))doecho{strArr〔i〕};done;forin遍历元素forelementin{strArr〔〕}doechoelementdone3。修改数组元素strArr〔0〕modifyecho{strArr〔0〕}4。删除元素unsetarr〔1〕echo{arr〔〕}echo{arr〔〕}13!使用unset要注意,这其实并不是真正删除了该元素,而只是将该元素置空,所以使用下标遍历会出问题,如下echo数组遍历:for((i0;i{arr〔〕};i))doechoindex{i}{arr〔i〕};done;index01index1解决unset无法真正删除的方法:重新赋值给新的数组echo数组遍历:arr({arr〔〕})for((i0;i{arr〔〕};i))doechoindex{i}{arr〔i〕};done;index01index13判断语句
  使用if和fi定义判断的边界,使用then,elif,else定义条件!usrbinenvbash!usrbinenvbasha10b20if〔ab〕thenecho相等elseecho不相等fiif〔ab〕thenecho相等elif〔altb〕thenechoa小于belseecho其他情况fi函数
  调用函数时,我们可以传入参数,可以通过n来获取参数,这里的n表示需要取的参数的索引,当n10时,需要使用{n}来获取参数
  传递给函数的参数个数,和显示所有传递给函数的参数,?表示函数的返回值,也可以用于获取上一个命令的退出状态,执行成功会返回0,失败返回1定义函数!usrbinenvbashfunWithParam(){echo参数个数:参数个数:11echo传递给函数的所有参数:传递给函数的所有参数:1234567893473echo11超过9的参数需要用{}接收参数,否则直接显示数值echo1010echo{11}73}调用函数:函数名后面直接跟上参数funWithParam1234567893473echo?0输入输出重定向
  使用将应该输出到终端上的数据重定向输出到文件,默认为覆盖文件,使用追加写入文件
  使用将默认从键盘输入的数据,定向为从文件输入who命令用于显示系统中有哪些使用者正在上面将结果输入who。txtwhowho。txtwcl作用是计算文本行数wclwho。txt
  一般情况下,每个UnixLinux命令运行时都会打开三个文件:标准输入(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据标准输出(stdout):stdout的文件描述符为1,Unix程序默认向stdout输出数据标准错误输出(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息
  所以一般我们后台启动应用并且输出日志文件都使用:nohupjavajarxxx。jarnohup。log21
  nohup:(nohangup)保证在退出帐户或者关闭终端之后继续运行相应的进程
  nohup。log:将javajarxxx。jar的输出追加到nohup。log文件
  21:将javajarxxx。jar的标准错误输出也重定向到标准输入
  :让进程在后台运行
  默认情况下,commandfile将stdout重定向到file,commandfile将stdin重定向到file。
  如果希望stderr重定向到file,可以这样写:坑梳理变量赋值时,变量名命名规则和其他语言类似,注意变量赋值时两边不能有空格数组unset元素,并不是真正的移除元素获取参数时,当n10时,需要使用{n}来获取参数常见的特殊Shell环境变量表示当前Shell进程的ID,即pid0表示当前脚本的绝对路径传递给脚本或函数的参数个数n传递给脚本或函数的参数?上个命令的退出状态和传递给脚本或函数的所有参数nn代表19其中任意一个数字,传递给脚本或函数该位置的参数
  和区别:!usrbinenvbashfunctionasterisk(){echoforvarindoechovardone}functionmail(){echoforvarindoechovardone}asteriskabcmailabc
  输出abcabc
  当和直接使用效果相同,都是接收一份数据如上所示的例子,接收到的就是:abc,一份数据,以空格隔开。加了双引号后会将每个参数都当成一份独立的数据
  原文链接:https:www。cnblogs。comaaronlinvp15764053。html

董思怡担任二十不惑主演搭档关晓彤演绎青春成长星关系7月19日讯由上海柠萌影视传媒有限公司出品,徐晓鸥担任总制片人,沈严监制,黎志导演,关晓彤、董思怡、卜冠今、李庚希主演的现实主义话题剧《二十不惑》昨日在深圳举行开机仪式。……数据驱动算法在机器学习中的应用AuthorCogitoTechLLC机器学习的概念分析机器学习作为一个概念,与提高计算机使用算法和神经网络模型学习的能力有关,并能更快更有效地执行各种任务。机器学……携手日本潮牌打造的玛莎拉蒂Ghibli特别版上市,国内仅限7近日,玛莎拉蒂宣布与日本街头文化教父藤原浩创立的潮流品牌Fragment携手打造特别版Ghibli,跨界推出玛莎拉蒂GhibliOperanera歌剧黑和GhibliOpera……09Java线程(上)Java线程的生命周期Java并发编程领域实现并发程序的主要手段就是多线程,线程是操作系统的一个概念。虽然各种语言都进行了封装,但是万变不离其操作系统。Java语言里面的线程本质上就是操作系统的线程……8090在职场14回忆我和湖南农大(2)失败的油菜移栽机小说主人公简介:叶舟,男,85后,在体制内外均有工作轨迹。一个在工作和生活中寻找追求真善美的斜杠青年。叶舟在2013年末入职了某农业机械集团公司,该公司主要生产收割……当充电遇上燃油车占位,让本就紧张的车位雪上加霜当你的爱车电量告急,而你刚好知道最近2公里处的商场停车场有充电桩,满怀喜悦地过去发现只剩下一个充电位,但是这个位置却被燃油车占据的情况下,你会怎么样?说起充电过程最烦心的事莫过……大兴机场新国门,带着手机前来打卡昨日被一则消息刷屏,也是一个振奋人心的消息,北京大兴机场正式投运。它是全球规模最大的单体机场行航站楼。总长度约500公里,可以绕北京五环五圈。它还拥有世界最大的屋顶面积高达1。……V粉开心了!OriginOS再次公测,这次机型超多各家手机厂商都会有一个系统,尤其是国产手机,各家的手机系统不尽相同,体验自然也会有所差别,系统好用起来也舒服,作为近期的新宠OriginOS一直被人们关注,很多人也想在第一时间……华为发布首款商用5G折叠屏手机超级快充再次升级〔西班牙,巴塞罗那〕2月24日,华为在2019世界移动通信大会(MWC)正式发布具有划时代意义的5G折叠屏手机HUAWEIMateX,成为华为2019年发布的首款5G手机。HU……国外的品牌手机除了苹果,还有什么手机很出名?其实,在很多国产品牌比如华为、OPPO、vivo、小米、魅族、金立等等还没有崛起之前。曾经的手机市场一度由国际品牌所主导的。这些国外品牌除了现在的苹果、三星之外,其中包括被联想……张雅钦扶摇热播心灵珠脚汤引网友共鸣由杨幂、阮经天、张雅钦等联袂主演的大型古装女性励志剧《扶摇》正在持续热播中,张雅钦饰演的雅兰珠凭借自身的少女感不仅收获大量关注,还收割一票追剧观众。最新剧情中雅兰珠再次开启追野……3000以内的中国品牌手机,要5G,内存8128有什么推荐?感谢邀请3000以内的中国品牌手机,要5G,内存8128有什么推荐?需求是3000元以内的国产品牌5G手机,而且要求8G128G。这样的范围我觉得有些大了,所以我觉得可以……
吴莫愁酷飒回归2021中国好声音预告新专辑8月推出即将于本周五晚20:20播出的《2021中国好声音》于昨日正式召开新闻发布会。好声音节目的第一个十年开启全新44导师新模式,由导师那英、汪峰、李荣浩、李克勤,导师助教吴莫愁、吉……情歌王子品冠再唱掌心与黄龄同台耍宝回首有情岁月广东卫视音乐文化节目《流淌的歌声》第三季于上周五晚播出,围绕有情岁月的主题,著名歌手品冠、黄龄、姜育恒、黄凯芹唱响经典老歌,用音乐背后一个个有趣又动人的故事,与观众们一起回首隐……全通控股(08316。HK)高创远为拟以资本注入方式投资江苏格隆汇1月28日丨全通控股(08316。HK)宣布,公司的间接全资附属公司陕西高创远为能源有限公司(高创远为)于2022年1月28日,与江苏普亚能源科技有限公司(江苏普亚)订立……谁是宝藏歌手收官陆虎用实力让世界满意湖南卫视大型音乐综艺节目《谁是宝藏歌手》已经全面收官,最后一期节目高光之夜,28位宝藏歌手回归舞台,共同带来精彩表演。细数舞台上的宝藏瞬间,最让人印象深刻的莫过于原创唱作……奇瑞新能源大蚂蚁国补退坡不涨价大蚂蚁的外观方面,蚂蚁整体延续家族设计风格,前脸采用封闭式格栅,并配备点阵式镀铬元素装饰,进行点缀。而且这款车外观设计非常的漂亮,它的设计风格也是相当的不错。这台小型SUV在外……人文纪录片我在敦煌定档7月3日寻味烟火敦煌的凡人歌敦煌是一座城市,还是一个符号?丝绸之路上的敦煌,是丝路精神的见证者、实践者和传承者。在一带一路视野下,更承担着中国传统文化遗产的研究、保护、修复的重任。那些被敦煌吸引而来的人,……国内首支明星母女rap妈呀,宝啊!上线凯丽可可真情吐露引热搜国内首档关注女性银发族的节目《妈妈你真好看》正在热播,作为节目中唯一一对明星母女,凯丽、张可盈表现抢眼,神仙母女情获赞。首期节目中的一段精彩rap惊艳四座后被网友疯狂催更完整版……做家务的男人3今日开播陈学冬养老boy上线今日(6月11日),由爱奇艺出品的聚焦当代亲密关系和家庭责任的社会观察类节目《做家务的男人3》回归开播。最新一季不仅延续了前两季家庭生活的温馨氛围,更有陈学冬携手黄景瑜及THE……百分之二的爱第二季首曝预告片全面升级开启暖心之旅都市生活压力剧增、生活节奏不断变快、社会老龄化加剧等一系列问题导致宠物已经成为当下人们抚慰情感的出口。都市青年人生赢家的新标准已更新换代为猫狗双全,与此同时,人为的各种原因也造……杨笠天天向上畅聊青春期故事早恋烦恼引共鸣6月6日晚,以青春期孩子与父母的代际沟通为话题的《天天向上》在湖南卫视播出。本期节目邀请了家有青春期孩子的妈妈钟丽缇、程莉莎,携手心理咨询师田芊直面6位青春期少男少女,并与杨笠……凯丽挑战街舞展现刘慧芳狂野一面张可盈展现迷妹特质《妈妈你真好看》播出过半,从各位妈妈们的装扮和表现来看,在时尚的道路上已经站稳脚跟,对时尚概念的理解也越来越深。作为插班生的凯丽和张可盈母女,经历了首次亮相时的出道即巅峰,新一……金曲青春完美收官全能ACE李汶翰获最受欢迎家族担当6月5日,全国首档音乐厂牌对抗秀《金曲青春》迎来了收官之战,这场激燃了整个春夏之交的音乐盛会也正式落下了帷幕。在六大家族担当之中,乐华家族的家族担当李汶翰喜提最受欢迎家族担当荣……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网