范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

关于Shell脚本的经典十三问,运维不可不知

  哈喽大家好!我是波哥!
  最近做了一个简约版互联网行业新闻小程序.
  有兴趣的可以点击下方链接或者微信搜索: IT路边社
  IT路边社
  1、为何叫做 Shell?
  我们知道计算机的运作离不开硬件,但却无法直接操作硬件,硬件的驱动只能通过一种称之为"操作系统(OS,Opertating System)的软件来管控。Linux 严格来说是一个操作系统(OS)。
  使用者没有办法直接操作 Kernel,而是通过 Kernel 的"外壳"程序,也就是所谓的 Shell 来与 Kernel 沟通。Shell 是一个使用者与系统的交互界面(Interface),只能通过命令行(Command line)来使用系统来完成工作。因此 ,
  Shell 最简单的定义就是:命令解译器(Command Interpreter)
  将使用者的命令翻译给内核处理;
  同时,将内核处理结果翻译给使用者。
  不同的 OS 使用不同的 Kernel;同一个 kernel 之上,也可以使用不同的 Shell,常见的 Shell 有sh、bash、csh、ksh 等
  2、Shell prompt(PS1)与 Carriage Return(CR)的关系?
  成功登录一个 Shell 终端后,光标左边部分称之为提示符 Prompt,通常一般用户使用 $,管理员用户使用#
  Shell Prompt:可以输入命令了,键入命令后,直到读进 CR(Carriage Return)字符为止
  Carriage Return:可以执行命令了
  若从技术的细节来看,Shell 会依据 IFS(Internal Field Seperator)将 Command line 所输入的文字拆解为"字段"(word/field)。然后再针对特殊字符(meta)先作处理,最后重组整行command line。
  3、别人echo,你也echo,试问 echo 知多少?
  echo 将 argument送到标准输出(stdout),通常显示在屏幕stdin 标准输入
  stdout 标准输出
  stderr 标准错误输出echo -n # 取消换行符echo -e # 启用反斜杠转译
  4、双引号""与单引号""有什么区别?
  hard quote:""(单引号),关闭所有引用
  soft quote:""(双引号),保留$引用
  5、var=value? export 前后差在哪?
  变量定义:name=value,等号左右两边不能使用分隔符。
  变量替换:echo ${name}
  export变量:export name=value,使变量成为环境变量# 本地变量A=B# 取消变量unset A# 环境变量export A=B
  6、exec 跟 source 差在哪?环境变量只能从父进程到子进程单向传递。换句话说:在子进程中环境如何变更,均不会影响父进程的环境。
  当我们执行一个shell script时,其实是先产生一个sub-shell的子进程, 然后sub-shell再去产生命令行的子进程。# 创建子shell执行脚本./1.sh# 当前shell执行source 1.sh# 当前shell执行后退出exec 1.sh
  7、 与 { } 差在哪?
  将 command group 置于 sub-shell 执行
  { }则是在同一个shell内完成
  8、$() 与 $ 还有 ${} 差在哪?# 假设我们定义了一个变量为:file=/dir1/dir2/dir3/my.file.txt# 我们可以用 ${ } 分别替换获得不同的值:
  # 1. shell字符串的非贪婪(最小匹配)左删除${file#*/} # 拿掉第一条 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt# 2. shell字符串的贪婪(最大匹配)左删除${file##*/} # 拿掉最后一条 / 及其左边的字符串:my.file.txt${file##*.} # 拿掉最后一个 . 及其左边的字符串:txt# 3. shell字符串的非贪婪(最小匹配)右删除:${file%/*} # 拿掉最后条 / 及其右边的字符串:/dir1/dir2/dir3${file%.*} # 拿掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file# 4. shell字符串的贪婪(最大匹配)右删除:${file%%/*} # 拿掉第一条 / 及其右边的字符串:(空值)${file%%.*} # 拿掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my
  记忆的方法为:# 是去掉左边(在键盘上 # 在 $ 之左边)% 是去掉右边(在键盘上 % 在 $ 之右边)单一符号是最小匹配﹔两个符号是最大匹配。# 5. shell字符串取子串:${file:0:5}:提取最左边的 5 个字节:/dir1${file:5:5}:提取第 5 个字节右边的连续 5 个字节:/dir2
  # 6. shell字符串变量值的替换:${file/dir/path}:将第一个 dir 提换为 path:/path1/dir2/dir3/my.file.txt${file//dir/path}:将全部 dir 提换为 path:/path1/path2/path3/my.file.txt
  # 7. ${}还可针对变量的不同状态(没设定、空值、非空值)进行赋值:${file-my.file.txt} :假如 $file 没有设定,则使用 my.file.txt 作传回值。(空值及非空值时不作处理) ${file:-my.file.txt} :假如 $file 没有设定或为空值,则使用 my.file.txt 作传回值。(非空值时不作处理)${file+my.file.txt} :假如 $file 设为空值或非空值,均使用 my.file.txt 作传回值。(没设定时不作处理)${file:+my.file.txt} :若 $file 为非空值,则使用 my.file.txt 作传回值。(没设定及空值时不作处理)${file=my.file.txt} :若 $file 没设定,则使用 my.file.txt 作传回值,同时将 $file 赋值为 my.file.txt 。(空值及非空值时不作处理)${file:=my.file.txt} :若 $file 没设定或为空值,则使用 my.file.txt 作传回值,同时将 $file 赋值为 my.file.txt 。(非空值时不作处理)${file?my.file.txt} :若 $file 没设定,则将 my.file.txt 输出至 STDERR。(空值及非空值时不作处理)${file:?my.file.txt} :若 $file 没设定或为空值,则将 my.file.txt 输出至 STDERR。(非空值时不作处理)
  tips:以上的理解在于, 你一定要分清楚 unset 与 及 non- 这三种赋值状态.一般而言, : 与 有关, 若不带 : 的话, 不受影响, 若带 : 则连 也受影响.# 8. 计算shell字符串变量的长度:${#var}${#var} 可计算出变量值的长度:${#file} 可得到 27 ,因为 /dir1/dir2/dir3/my.file.txt 刚好是 27 个字节...
  # 9. bash数组(array)的处理方法数组:A=(a b c d)引用数组:${A[@]}${A[*]}访问数组成员${A[0]}计算数组长度${#A[@]}${#A[*]}数组重新赋值A[2]=xyz
  # 10.$()是用来做整数运算的 a=5;b=7;c=2;echo $(( a + b * c))
  9、$@ 与 $* 区别在哪?
  "$@"则可得到 "p1" "p2 p3" "p4" 这三个不同的词段
  "$*"则可得到 "p1 p2 p3 p4" 这一整串单一的词段
  10、&& 与 || 差在哪?
  1、test命令有两种形式
  test expression
  [ expression ]
  2、bash的test目前支持三种测试对象
  string:字符串
  integer:整数
  file:文件
  3、当 expression 为真是返回 0(true) ,否则返回 非0(false)
  command1 && command2 command2 只有在 command1 的RV为0(True)的条件下执行。
  command1 || command2 command2只有在command1的RV为非0(False)的条件下执行。
  4、先替换变量再比较A=123[ -n "$A" ] && ([ "$A" -lt 100 ] || echo "too big")unset A
  11、> 与 < 差在哪?0: Standard Input(STDIN)
  1: Standard Output (STDOUT)
  2: Standard Error Output(STDERR)
  我们可用 < 来改变读进的数据信道(stdin),使之从指定的档案读进。
  我们可用 > 来改变送出的数据信道(stdout, stderr),使之输出到指定的档案。ls my.file no.such.file 1> file.out 2>file.err# 2>&1 就是将stderr并进stdout做输出ls my.file no.such.file 1> file.out 2>&1# /dev/ 空ls my.file no.such.file >/dev/ 2>&1
  cat < file > file# 在 IO Redirection 中,stdout 与 stderr 的管道会先准备好,才会从 stdin 读进资料。# 也就是说,在上例中,> file 会先将 file 清空,然后才读进 < file , # 但这时候档案已经被清空了,因此就变成读不进任何数据了
  12、你要if还是case呢?# ifecho -n "Do you want to continue?(Yes/No):"read YNif [ "$YN"=Y -o "$YN"=y -o "$YN"="Yes" -o "$YN"="yes" -o "$YN"="YES"];thenecho "continue"elseexit 0fi
  # caseecho -n "Do you want to continue?(Yes/No):"read YNcase "$YN" in[Yy]|[Yy][Ee][Ss])echo "continue";;*)exit 0esac
  13、for what? while与until差在哪?# forfor ((i=1;i<=10;i++))doecho "num is $i"done
  # whilenum=1while [ "$num" -le 10 ]; doecho "num is $num"num=$(($num + 1))done
  # untilnum=1until [ "$num" -gt 10 ]; doecho "num is $num"num=$(($nu + 1))done
  break 是结束 loop
  return 是结束 function
  exit 是结束 script/shell
  来源:https://www.cnblogs.com/rustling/p/9833174.html
  获取更多的面试题、脚本等运维资料点击: 运维知识社区 获取
  脚本之---短信轰炸机
  脚本之---QQ微信轰炸机
  ansible---一键搭建redis5.0.5集群
  elk7.9真集群docker部署文档
  全球最全loki部署及配置文档
  最强安全加固脚本2.0
  一键设置iptbales脚本

新能源购车如何选择随着我国造车技术的不断完善,新能源汽车的普及率变得更加广泛,消费者对于新能源汽车的接受度也在日益提高。然而,由于缺乏对汽车的了解,面对种类繁多的汽车配置,很多新手司机都会感到不知所协作机器人闪耀冬奥,产业人看到哪些新趋势?北京冬奥会堪称机器人总动员,泡茶送餐带路消毒这些炫酷的机器人不仅减少了人员间的近距离接触,同时也为赛事的举办提供了有力保障。冬奥会向全民展示了更广泛的机器人应用,对产业后续发展必然美国投下金融核弹,SWIFT系统剔除俄罗斯!一文读懂SWIFT前世今生美国当地时间周六晚间,根据白宫官网的信息,美国欧盟加拿大英国联合发表声明将禁止部分俄罗斯银行使用环球银行金融电信协会(SWIFT)支付系统,并对俄罗斯央行实施限制措施。就在俄罗斯乌75寸的电视要画质和音质好,在1万以内买哪款比较好?我也是购买75寸的,可以给你一些建议,最开始我入围了5款,分别是海信HZ75E5A,长虹75D3P,小米4S75创维75A7TCL75V2这几款价位都在一个档次上,就是不同品牌的B如何推广漫画?1。新闻营销品牌推广最重要的目标就是打开品牌知名度,树立良好的品牌形象,使受众产生对品牌的好感与信任,进而增加购买品牌产品的可能性,扎实提高用户品牌忠诚度粘度。新闻媒体是最具权威的金立加入华为生态!6256G新机只卖899,国人很喜欢目前金立这个品牌已经基本在高销量产品中缺失了,不过比较意外的是,在低端机市场上,我们看到金立这个品牌其实还比较活跃。因为在高端机领域无法和小米OV荣耀等竞争,主要是金立现在也确实没Apple申请新专利将Mac计算机集成至键盘机身外媒日前发现Apple先前申请一项,涉及将计算机集成键盘的输入设备中的计算机专利。根据Apple提交的专利申请文件,他们构想的设备尺寸与现在的MagicKeyboard大小相当,可来自日本的小屏手机BALMUDAPhone数码好物荐巴慕达的创始人寺尾玄认为现在的智能手机都实在是太大了,不好塞进口袋里。BALMUDAPhone是5G智能手机里唯一一款不包含任何直线的机型,重量仅有138g,即便只是看看几乎没有差评,2022年最值得考虑的4款手机,看看你怎么选?2022年已经过去了六分之一,很多朋友都来主动咨询我今年最值得入手的手机,所以今天来给大家介绍三款我心目中的开年神机,感兴趣的朋友不妨了解一下。OPPOFindX5Pro这可以说是iPhone14再爆猛料!京东方已经收到订单?果粉取消刘海屏后更丑相信有关注机圈的朋友都知道,年年甚至是天天都会有关注iPhone的爆料。毕竟苹果的影响力确实大,即便不买它的产品,也会对它的一些消息感兴趣。不过,大部分关于iPhone的爆料都很假京东确定收购德邦,老崔泪洒当场经过一个多月的洽谈,终于尘埃落地,京东确定收购德邦,之前我们已经透露出相关信息,尽管德邦公关辟谣,但是没有不透风的墙,所以我们本着对大家负责的角度一致未删帖。至此零担之王德邦走下神
燃油车将全面淘汰?大众计划一年造80万电动车,国产车压力有点大图为大众电动汽车近年来新能源汽车发展已呈现不可阻挡态势,不仅有大量新兴品牌成立投入市场,绝大多数传统汽车厂商也向这一领域内注入了大量资源,最近大众汽车发布了最新的发展规划,计划未来pandas之resetindex()今天分享一篇pythonpandas的基础知识,重置数据框索引resetindex()主要用于数据框重置索引importpandasaspdimportnumpyasnpdfpd。北华航天工业学院为显微镜戴上隐形眼镜现代光学显微镜可以将物体放大到几千倍,但是在显微镜的使用过程中,对不同的观测物体需要通过更换不同放大倍数的目镜或者物镜来实现,这样既增加了显微镜的使用复杂程度也提高了使用成本。有没Reno8外观揭晓一加的设计就是最好的设计OPPO的Reno8系列新机在今天正式官宣将于本月23日发布,早上的时候官方只给出了个预告,并没有公布该机过多的消息,但是网友神通广大,下午的时候这款新机的标准版外观渲染图就在网络10年Mac用户,叛变到LGgram的半个月Hello,我是用了十年Mac的善生作为一个10多年的Mac用户,历代Mac基本都会更新。自打我去年换了16寸的MacBookPro以后,已经完全习惯了大屏幕。但是4斤多的重量,我用户被玩坏了!只因三星和苹果顶配旗舰,均跌破八千元大关在国内手机市场中,选择国产机的用户确实偏多一些,但是选择海外厂商新机的用户也不少,尤其是三星手机和苹果iPhone,更是深受用户的喜爱。因为海外品牌在智能手机市场初期的发展速度非常台积电版骁龙8Plus要来了?520骁龙之夜将揭晓5月16日上午,高通中国在微博发布了一张海报,正式宣布将于5月20日召开2022骁龙之夜,并将在此次发布会上发布全新骁龙移动平台。而根据此前的传闻,此次发布会的重点就是发布最新的SRedmi最强旗舰上市在即,红米K40跌至大米价刷新发烧史今天上午,小米集团中国区总裁Redmi品牌总经理卢伟冰转发了高通的微博,暗示Redmi将会推出骁龙8Plus终端新品。今年上半年,Redmi推出了骁龙8终端,名为RedmiK50游iPhone或改用USBC接口,最快明年启用分析师郭明錤认为,明年iPhone可能会改用更加通用的USBC接口,从而提高iPhone传输和充电速度。对于USBC接口,苹果几年来一直比较排斥,但随着越来越多智能手机品牌接受可逆品质小金刚跌至1349元,1亿像素256GB120Hz变速高刷,真香声明原创不易,禁止搬运,违者必究!每款手机都有自己的特色,而这两个特色是最受欢迎的。一个是高配的手机产品,就比方说苹果华为的一些旗舰手机,堆料非常猛,虽说定价高,但是也丝毫不影响销中国版马斯克抖音账号被禁止发布作品三言财经5月13日消息,今日,三言财经发现,继微博账号被封后,中国版马斯克的马一龙抖音账号被禁止发布作品。页面显示账号存在争议,暂停其发布作品功能。昵称为马一龙的网友发布的视频中,