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

关于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脚本

电信用户怎么办?苹果iPhone13系列去掉CDMA支持,影响使用吗在苹果iPhone13系列新品发布之后,毫无疑问地又成为了热门手机,不少小伙伴都在讨论购买的相关问题,现在各个平台的发货时间也飘忽不定。不过如果是电信用户,不妨稍微注意一下,这次新轻薄便携游戏性能更全面的大屏创作体验灵耀Pro16评测某种意义上,创作者对于创作设备的要求是十分苛刻的。一款理想的创作笔记本,既需要满足创作者对于轻薄便携高颜值的需求,又需要拥有强悍的性能和续航灵活的操控,屏幕素质还不能不高。说实话,新版本更新,畅连应用上线荣耀50SE,老好用了最近手上的荣耀50SE推送了162版本,新版本增添了畅连应用优化了拍照性能,并为系统打补丁去BUG等升级维护。其中,畅连应用是我十分感兴趣的,像微信一样提供免费的音视频电话,还加入外星人AURORAR12台式机评测仍然提供最好的游戏体验随着英特尔第11代酷睿处理器的发布,并且游戏显卡也迎来新的一代,戴尔也将其外星人AuroraR12主机升级为最新的英特尔的第11代处理器,并且搭配有最新一代的RTX30系列游戏显卡索尼推出PS5专用固态硬盘,2TB容量售价高达4000元近日索尼更新了PS5的硬件驱动,开始支持玩家自己外接固态硬盘。这不官方也开始发力了,立马推出了两款固态硬盘,2TB版本售价高达4000元。要知道这个价格都相当于,一款PS5主机的售索尼电视怎么选?从原理到推荐,2021年索尼电视选购指南本内容来源于什么值得买APP,观点仅代表作者本人作者王二狗前言大家好,我是二狗。今年总算有时间来更新自己挖坑已久的电视选购专题咯。延续去年对索尼电视的产品全线解析,二狗今天给大家带直降300!OPPOReno6Pro游戏体验大升级,等等党赢了说起OPPOReno6Pro这款手机,大家应该不陌生。三个月凭借着轻薄精致的机身设计,以及出色强悍的影像实力,一发布就成为了爆款机型,火遍全网。尽管现在已经发布三个月时间了,但是它魅蓝推出回归首款新品,魅族秋季新品发布会预热近日,魅族科技宣布,将于9月22日举办魅族有点东西秋季新品发布会。按照官方的说法,将于这次活动中推出魅族18s18sPro18X三款旗舰,还将带来FlymeLiproPANDAER无线耳机哪个品牌好一点?全球十大品牌蓝牙耳机排行榜蓝牙耳机对于现在年轻人的生活有多重要?上学通勤需要,下班回家需要,打游戏看电视各种场景都经常需要用到蓝牙耳机,而蓝牙耳机有多重要相信大家也有结果了。那蓝牙耳机作为陪伴我们日常生活的9月新机扎推发布,备战双十一,看看有没有你想要的?2021年的手机市场相当热闹,新机发布频繁,短短两个多月,骁龙888Plus旗舰机型就已经发布了七八款。搭载A15的iPhone13系列也已经正式发布,众多新机让用户眼花缭乱。时间买手机别只看处理器内存等,这几点不行,手机依旧不好用1系统系统优化比硬件更直接硬性手机性能体验,系统UI一定要稳定,不然即使你的硬件再好都是摆设。国产安卓阵营中,比较稳定的就是coloros好看和稳定,该有的功能都有,还有就是华为的
公认口碑不错的三款手机,都在2k左右,国产优质手机太香了今天给大家推荐3款口碑不错的手机,都是国产优质手机,快看看有没有你心动的。vivoiQOONeo5S处理器骁龙888屏幕6。62英寸,AMOLED,120Hz摄像头4800WOIS中国投资人盯上欧美草坪焦点分析文韦雯编辑吴睿国内一级市场的投资人们,关注起了欧美人家门口的草坪。不下10位关注机器人及出海的投资人,向36氪提到正在关注割草机器人。作为跨境电商中的传统品类,割草机正在迎来智能化光伏风电等新能源板块爆发新能源汽车原材料端,LGES于澳大利亚签70万吨锂精矿供应协议,特斯拉与淡水河谷矿业签订长期镍供应合同。电池端,宝马新车型将搭载圆柱电池以降低30电池成本。美国Natron公司研发4月新能源终端总量排行比亚迪稳居首位,特斯拉跌出前二十由于疫情反扑,多个汽车生产重要城市进入到静默防疫管控状态,进行了长时间的停工停产。零部件生产工厂停工导致供应链出现问题从而影响整车生产物流停止运送导致车辆不能如期交付静默防控过程中突发!Gitee宣布仓库开源必须人工审核,中国Github要无了?编辑David好困新智元导读素有国产Github之称的开源代码库Gitee宣布,今后开源仓库发布都要经过人工审核,未审核的老库转为私有,并表示此举迫于无奈,希望大家理解。两天前,有1500左右的三款新机,你会选择吗你认为新机和二手哪款性价比高?看下哪些人支持新机,哪些人支持二手,评论区告诉我。以下三款新机,是1500价位段最值得推荐的,看是否有你的菜呢第一款realmeGTNeo2T新机81中原消费金融金融科技普惠金融赋能绿色消费作为持牌消费金融机构,一个有社会责任感的企业。中原消费金融成立以来,通过不断延伸服务触角,创新业务模式,提高技术水平和风控效率,通过多维度数据挖掘服务传统金融机构难以覆盖的人群,从静态网站生成工具hugo前段时间使用docker搭建了一个wiki的网站,用于记录日常学习中的笔记,用了一段时间,功能很强大,但是编辑器不太熟悉,网站使用java开发的,功能很全面,插件多的时候就感觉越来阿维塔11正式开启预订车机鸿蒙OS系统搭载华为双电机5月20日,阿维塔11正式开启预订,订金520元。作为品牌首款车型,新车呈现出很强的科技感,有望于第三季度正式发布。外观方面大家已经比较熟悉,看起来很有个性,整个车头也是新能源车惯海豹有CTBiTAC加持,与model3比,又多了几分胜算5月20日,比亚迪发布了预热已久,令人翘首以盼的海洋生物第二款车型海豹,补贴后价格为21。28万元至28。98万元,分为三款后驱车型和一款四驱车型。不出所料,比亚迪在海豹上用足了料5G新通话消息和畅连,谁会是微信的对手微信是目前用户最多使用频率最高服务最广的即时通讯软件。从5岁小孩,到85岁老人之间有微信的用户。手机里,每天点开最多的就是微信了,不但能够进行聊天语音视频等即时通讯该有的功能,同时