Shell 脚本是什么?
一个 Shell 脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell 脚本)来完成这些日常工作任务。
- 什么是默认登录 Shell ?
在 Linux 操作系统,"/bin/bash" 是默认登录 Shell,是在创建用户时分配的。
使用 chsh 命令可以改变默认的 Shell 。示例如下所示:
## chsh <用户名> -s <新shell>## chsh ThinkWon -s /bin/sh
-在 Shell 脚本中,如何写入注释?
注释可以用来描述一个脚本可以做什么和它是如何工作的。每一行注释以 # 开头。例子如下:
#!/bin/bash## This is a commandecho “I am logged in as $USER”
2. 语法级
- 可以在 Shell 脚本中使用哪些类型的变量?
在 Shell 脚本,我们可以使用两种类型的变量:
系统定义变量:系统变量是由系统系统自己创建的。这些变量通常由大写字母组成,可以通过 set 命令查看。
用户定义变量:用户变量由系统用户来生成和定义,变量的值可以通过命令 "echo $<变量名>" 查看。
- Shell脚本中 $? 标记的用途是什么?
在写一个 Shell 脚本时,如果你想要检查前一命令是否执行成功,在 if 条件中使用 $? 可以来检查前一命令的结束状态。
· 如果结束状态是 0 ,说明前一个命令执行成功。例如:
root@localhost:~## ls /usr/bin/shar/usr/bin/sharroot@localhost:~## echo $?0
· 如果结束状态不是0,说明命令执行失败。例如:
root@localhost:~## ls /usr/bin/sharels: cannot access /usr/bin/share: No such file or directoryroot@localhost:~## echo $?2
- Bourne Shell(bash) 中有哪些特殊的变量?
下面的表列出了 Bourne Shell 为命令行设置的特殊变量。
内建变量 解释$0 命令行中的脚本名字$1 第一个命令行参数$2 第二个命令行参数….. …….$9 第九个命令行参数$## 命令行参数的数量$* 所有命令行参数,以空格隔开
- 如何取消变量或取消变量赋值?
unset 命令用于取消变量或取消变量赋值。语法如下所示:
## unset <变量名>
- Shell 脚本中 if 语法如何嵌套?
if [ 条件 ]then命令1命令2…..elseif [ 条件 ]then命令1命令2….else命令1命令2…..fifi
- 在 Shell 脚本中如何比较两个数字?
在 if-then 中使用测试命令( -gt 等)来比较两个数字。例如:
#!/bin/bashx=10y=20if [ $x -gt $y ]thenecho “x is greater than y”elseecho “y is greater than x”fi
- Shell 脚本中 case 语句的语法?
基础语法如下:
case 变量 in值1)命令1命令2…..最后命令!!值2)命令1命令2……最后命令;;esac
Shell 脚本中 for 循环语法?
基础语法如下:-
for 变量 in 循环列表do命令1命令2….最后命令done
Shell 脚本中 while 循环语法?
· 如同 for 循环,while 循环只要条件成立就重复它的命令块。
· 不同于 for循环,while 循环会不断迭代,直到它的条件不为真。
基础语法:
while [ 条件 ]do命令…done
- do-while 语句的基本格式?
do-while 语句类似于 while 语句,但检查条件语句之前先执行命令(LCTT 译注:意即至少执行一次。)。下面是用 do-while 语句的语法:
do{命令} while (条件)
1234
- Shell 脚本中 break 命令的作用?
break 命令一个简单的用途是退出执行中的循环。我们可以在 while 和 until 循环中使用 break 命令跳出循环。
- Shell 脚本中 continue 命令的作用?
continue 命令不同于 break 命令,它只跳出当前循环的迭代,而不是整个循环。continue 命令很多时候是很有用的,例如错误发生,但我们依然希望继续执行大循环的时候。
- 如何使脚本可执行?
使用 chmod 命令来使脚本可执行。例子如下:chmod a+x myscript.sh 。
#!/bin/bash 的作用?
#!/bin/bash 是 Shell 脚本的第一行,称为释伴(shebang)行。
这里 # 符号叫做 hash ,而 ! 叫做 bang。它的意思是命令通过 /bin/bash 来执行。
- 如何调试 Shell脚本?
使用 -x' 数(sh -x myscript.sh)可以调试 Shell脚本。
另一个种方法是使用 -nv 参数(sh -nv myscript.sh)。
- 如何将标准输出和错误输出同时重定向到同一位置?
方法一:2>&1 (如## ls /usr/share/doc > out.txt 2>&1 ) 。
方法二:&> (如## ls /usr/share/doc &> out.txt ) 。
- 在 Shell 脚本中,如何测试文件?
test 命令可以用来测试文件。基础用法如下表格:
Test 用法-d 文件名 如果文件存在并且是目录,返回true-e 文件名 如果文件存在,返回true-f 文件名 如果文件存在并且是普通文件,返回true-r 文件名 如果文件存在并可读,返回true-s 文件名 如果文件存在并且不为空,返回true-w 文件名 如果文件存在并可写,返回true-x 文件名 如果文件存在并可执行,返回true
- 在 Shell 脚本如何定义函数呢?
函数是拥有名字的代码块。当我们定义代码块,我们就可以在我们的脚本调用函数名字,该块就会被执行。示例如下所示:
$ diskusage () { df -h ; }译注:下面是我给的shell函数语法,原文没有[ function ] 函数名 [()]{命令;[return int;]}
如何让 Shell 就脚本得到来自终端的输入?
read 命令可以读取来自终端(使用键盘)的数据。read 命令得到用户的输入并置于你给出的变量中。例子如下:
## vi /tmp/test.sh#!/bin/bashecho ‘Please enter your name’read nameecho “My Name is $name”## ./test.shPlease enter your nameThinkWonMy Name is ThinkWon
- 如何执行算术运算?
有两种方法来执行算术运算:
1、使用 expr 命令:## expr 5 + 2 。
2、用一个美元符号和方括号($[ 表达式 ]):test=$[16 + 4] ; test=$[16 + 4] 。
Shell 脚本是什么?的更多相关文章
- 第一个shell脚本
打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好. #!/bin/bash echo "Hello World !" &quo ...
- 使用C#给Linux写Shell脚本
在这个逼格决定人格,鄙视链盛行的年头,尤其是咱们IT界,请问您今天鄙视与被鄙视的次数分别是多少?如果手中没有一点压箱的本事,那就只有看的份了.今天我们也要提升下自己的格调,学习些脑洞大开的东西,学完之 ...
- shell脚本规划化模板
shell脚本规划化模板 Linux运维过程中,shell脚本是不可缺少的工具,但是每个运维人员编程的习惯都不一样,很多时候就是实现某个功能,写出来的脚本都是烂七八糟的.脚本必须规范化,应该从以后几个 ...
- Shell脚本编程30分钟入门
Shell脚本编程30分钟入门 转载地址: Shell脚本编程30分钟入门 什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_t ...
- Linux Shell脚本逻辑操作符简介
在写程序时,会用到条件判断,测试条件是否成立.很多时候,判断条件是多个的,这个时候需要用到逻辑操作符.shell脚本中常用的有哪些逻辑操作符呢? 1.逻辑与: -a 格式: conditon1 -a ...
- Linux shell脚本编程(三)
Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...
- Linux shell脚本编程(二)
Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...
- Linux shell脚本编程(一)
Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...
- 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器
本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...
- shell 脚本之循环使用 for while 详解
任何一种编程语言中循环是比不可少的,当然 shell 脚本也少不了循环语句,包括 for 语句. while 语句.文中主要以实际用例来说明 for while 都有哪些常见的使用方法和技巧. 一.f ...
随机推荐
- web开发 小方法1-禁止横向滚动
最近学了学做了个公司的网站 总结了一些小方法 比如取消横向滚动条并禁止的横向滚动 这样就可以吧超出的切掉让网页更和谐 在body 标签 body{ text-align: center; overf ...
- 微服务从代码到k8s部署应有尽有系列(十四、部署环境搭建)
我们用一个系列来讲解从需求到上线.从代码到k8s部署.从日志到监控等各个方面的微服务完整实践. 整个项目使用了go-zero开发的微服务,基本包含了go-zero以及相关go-zero作者开发的一些中 ...
- 一、Java 特性和运行机制
目录 Java 特性和优势 Java应用程序的运行机制 JVM.JRE和JDK Java 特性和优势 跨平台/可移植性 核心优势.比如:Java的int型永远是32位,C++(16,32). 安全性 ...
- node + express本地搭建服务器,开启一个新的项目
1.安装node.地址:https://nodejs.org/zh-cn/download/ 2.新建一个文件夹test,进入到该文件夹下 a.按shift + 鼠标右键 ,选择在此处打开命令窗口( ...
- Another app is currently holding the yum lock解决方法
用yum安装包有时候会提示 ``` Another app is currently holding the yum lock; waiting for it to exit... The oth ...
- [error]subprocess.CalledProcessError: Command '['which', 'g++']' returned non-zero exit status 1.
ubuntu 20.04 上安装 mmcv-full 时,无论是执行: pip install mmcv-full 还是将 mmcv-full 项目克隆下来编译,均会出现问题. 百度无果,去必应上逛了 ...
- [题解]第十一届北航程序设计竞赛预赛——F.序列
题目描述 (1,--,n)的一个排列S,定义其对应的权值F[S]为:将S划分为若干段连续子序列,每个子序列都是上升序列,F[S]的值等于能划分出的最小段数. 求n的全排列的F[S]的和,答案mod(1 ...
- kubernetes用户使用token安全认证教程
kubernetes server account的token很容易获取,但是User的token非常麻烦,本文给出一个极简的User token生成方式,让用户可以一个http请求就能获取到. to ...
- netty系列之:EventExecutor,EventExecutorGroup和netty中的实现
目录 简介 EventExecutorGroup EventExecutor EventExecutorGroup在netty中的基本实现 EventExecutor在netty中的基本实现 总结 简 ...
- Windows操作下各种工具常用快捷键
目录 Windows快捷键 谷歌浏览器快捷键 Nodepad++快捷键 Mobaxterm快捷键 Markdown快捷键 Windows快捷键 Win + E打开文件系统 Win + L锁屏 谷歌浏览 ...