一个 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/shar    root@localhost:~## echo $?    0

· 如果结束状态不是0,说明命令执行失败。例如:

 root@localhost:~## ls /usr/bin/share    ls: cannot access /usr/bin/share: No such file or directory    root@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 (条件)
    1    2    3    4

- 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 脚本是什么?的更多相关文章

  1. 第一个shell脚本

    打开文本编辑器,新建一个文件,扩展名为sh(sh代表shell),扩展名并不影响脚本执行,见名知意就好. #!/bin/bash echo "Hello World !" &quo ...

  2. 使用C#给Linux写Shell脚本

    在这个逼格决定人格,鄙视链盛行的年头,尤其是咱们IT界,请问您今天鄙视与被鄙视的次数分别是多少?如果手中没有一点压箱的本事,那就只有看的份了.今天我们也要提升下自己的格调,学习些脑洞大开的东西,学完之 ...

  3. shell脚本规划化模板

    shell脚本规划化模板 Linux运维过程中,shell脚本是不可缺少的工具,但是每个运维人员编程的习惯都不一样,很多时候就是实现某个功能,写出来的脚本都是烂七八糟的.脚本必须规范化,应该从以后几个 ...

  4. Shell脚本编程30分钟入门

    Shell脚本编程30分钟入门 转载地址: Shell脚本编程30分钟入门 什么是Shell脚本 示例 看个例子吧: #!/bin/sh cd ~ mkdir shell_tut cd shell_t ...

  5. Linux Shell脚本逻辑操作符简介

    在写程序时,会用到条件判断,测试条件是否成立.很多时候,判断条件是多个的,这个时候需要用到逻辑操作符.shell脚本中常用的有哪些逻辑操作符呢? 1.逻辑与: -a 格式: conditon1 -a ...

  6. Linux shell脚本编程(三)

    Linux shell脚本编程 流程控制: 循环语句:for,while,until while循环: while CONDITION; do 循环体 done 进入条件:当CONDITION为“真” ...

  7. Linux shell脚本编程(二)

    Linux shell脚本编程(二) 练习:求100以内所有偶数之和; 使用至少三种方法实现; 示例1: #!/bin/bash # declare -i sum=0 #声明一个变量求和,初始值为0 ...

  8. Linux shell脚本编程(一)

    Linux shell脚本编程: 守护进程,服务进程:启动?开机时自动启动: 交互式进程:shell应用程序 广义:GUI,CLI GUI: CLI: 词法分析:命令,选项,参数 内建命令: 外部命令 ...

  9. 详解Linux交互式shell脚本中创建对话框实例教程_linux服务器

    本教程我们通过实现来讲讲Linux交互式shell脚本中创建各种各样对话框,对话框在Linux中可以友好的提示操作者,感兴趣的朋友可以参考学习一下. 当你在终端环境下安装新的软件时,你可以经常看到信息 ...

  10. shell 脚本之循环使用 for while 详解

    任何一种编程语言中循环是比不可少的,当然 shell 脚本也少不了循环语句,包括 for 语句. while 语句.文中主要以实际用例来说明 for while 都有哪些常见的使用方法和技巧. 一.f ...

随机推荐

  1. Spring Boot AOP 扫盲,实现接口访问的统一日志记录

    AOP 是 Spring 体系中非常重要的两个概念之一(另外一个是 IoC),今天这篇文章就来带大家通过实战的方式,在编程猫 SpringBoot 项目中使用 AOP 技术为 controller 层 ...

  2. HTML表格总结

    知识小记: 表格的主要目的:用于HTML展示数据,不适用于布局. 表格由行的单元格组成,没有列,常识上的"列"的个数取决于行中单元格的个数. 表格本来就很丑,颜色线条美化交给css ...

  3. [题解]Codeforces Round #519 - D. Mysterious Crime

    [题目] D. Mysterious Crime [描述] 有m个n排列,求一共有多少个公共子段. 数据范围:1<=n<=100000,1<=m<=10 [思路] 对于第一个排 ...

  4. 十大经典排序算法(java实现、配图解,附源码)

    前言: 本文章主要是讲解我个人在学习Java开发环境的排序算法时做的一些准备,以及个人的心得体会,汇集成本篇文章,作为自己对排序算法理解的总结与笔记. 内容主要是关于十大经典排序算法的简介.原理.动静 ...

  5. Linux性能优化实战CPU篇之软中断(三)

    一.软中断 1,中断的定义 a>定义 举例:你点了一份外卖,在无法获知外卖进度的情况下,配送员送外卖是不等人的,到了发现没人取会直接走,所以你只能苦苦等着,时不时去门口看送到没有,无法干别的事情 ...

  6. 深入理解Cache工作原理

    内容来源:https://zhuanlan.zhihu.com/p/435031232 内容来源:https://zhuanlan.zhihu.com/p/102293437 本文主要内容如下,基本涉 ...

  7. C# 属性(一)

    C# 中的属性是特殊的方法,该方法只负责对私有字段经行的操作,.我们用反编译查看时候看到真实属性是带()的方法,里面还包含get()和set()方法. 属性完成对私有字段的封装.对类的外部用户来说,属 ...

  8. Qt:QJsonObject

    0.说明 QJsonObject在逻辑上就是一个Map或Dict!记住这一点对理解它的方法.说明很有帮助. QJsonObject类封装了JSON Object. JSON Object是一个Key- ...

  9. 含变量的字符串拼接(string.Format()或$"")

    含变量的字符串拼接,一般不要用 + 来连接字符串,可用以下两种方式: 一.string.Format() 二.$""  (在C#6以上的版本中可用,推荐这种写法) 1 public ...

  10. C#实现抢红包算法

    二倍均值法(公平版) 发出一个固定金额的红包,由若干个人来抢,需要满足哪些规则? 1.所有人抢到金额之和等于红包金额,不能超过,也不能少于. 2.每个人至少抢到一分钱. 3.要保证所有人抢到金额的几率 ...