`

实战shell

阅读更多

Q:1 Shell脚本是什么、它是必需的吗?

  • 答:一个Shell脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件(Shell脚本)来完成这些日常工作任务。

Q:2 什么是默认登录shell,如何改变指定用户的登录shell

  • 答:在Linux操作系统,“/bin/bash”是默认登录shell,是在创建用户时分配的。使用chsh命令可以改变默认的shell。示例如下所示:
# chsh <username> -s <new_default_shell>
# chsh linuxtechi -s /bin/sh

Q:3 可以在shell脚本中使用哪些类型的变量?

  • 答:在shell脚本,我们可以使用两种类型的变量:
    • 系统定义变量
    • 用户定义变量
      系统变量是由系统系统自己创建的。这些变量通常由大写字母组成,可以通过“set”命令查看。

用户变量由系统用户来生成和定义,变量的值可以通过命令“echo $<变量名>”查看。

Q:4 如何将标准输出和错误输出同时重定向到同一位置?

  • 答:这里有两个方法来实现:

方法一:

2>&1 (# ls /usr/share/doc > out.txt 2>&1 )

方法二:

&> (# ls /usr/share/doc &> out.txt )

Q:5 shell脚本中“if”语法如何嵌套?

  • 答:基础语法如下:
if [ Condition ]
then
command1
command2
…..
else
if [ condition ]
then
command1
command2
….
else
command1
command2
…..
fi
fi

Q:6 shell脚本中“$?”标记的用途是什么? ?

  • 答:在写一个shell脚本时,如果你想要检查前一命令是否执行成功,在if条件中使用“$?”可以来检查前一命令的结束状态。简单的例子如下:
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

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

Q:7 在shell脚本中如何比较两个数字 ?

  • 答:在if-then中使用测试命令( -gt 等)来比较两个数字,例子如下:
#!/bin/bash
x=10
y=20
if [ $x -gt $y ]
then
echo “x is greater than y”
else
echo “y is greater than x”
fi

Q:8 shell脚本中break命令的作用 ?

  • 答:break命令一个简单的用途是退出执行中的循环。我们可以在while和until循环中使用break命令跳出循环。

Q:9 shell脚本中continue命令的作用 ?

  • 答:continue命令不同于break命令,它只跳出当前循环的迭代,而不是整个循环。continue命令很多时候是很有用的,例如错误发生,但我们依然希望继续执行大循环的时候。

Q:10 告诉我shell脚本中Case语句的语法 ?

  • 答:基础语法如下:
case word in
value1)
command1
command2
…..
last_command
!!
value2)
command1
command2
……
last_command
;;
esac

Q:11 shell脚本中while循环语法 ?

  • 答:如同for循环,while循环只要条件成立就重复它的命令块。不同于for循环,while循环会不断迭代,直到它的条件不为真。基础语法:
while [ test_condition ]
do
commands…
done

12 如何使脚本可执行 ?

  • 答:使用chmod命令来使脚本可执行。例子如下:
# chmod a+x myscript.sh
1
# chmod a+x myscript.sh

Q:13 “#!/bin/bash”的作用 ?

  • 答:#!/bin/bash是shell脚本的第一行,称为释伴(shebang)行。这里#符号叫做hash,而! 叫做 bang。它的意思是命令通过 /bin/bash 来执行。

Q:14 shell脚本中for循环语法 ?

  • 答:for循环的基础语法:
for variables in list_of_items
do
command1
command2
….
last_command
done

Q:15 如何调试shell脚本 ?

  • 答:使用’-x’参数(sh -x myscript.sh)可以调试shell脚本。另一个种方法是使用‘-nv’参数( sh -nv myscript.sh)。

Q:16 shell脚本如何比较字符串?

  • 答:test命令可以用来比较字符串。测试命令会通过比较字符串中的每一个字符来比较。

Q:17 Bourne shell(bash) 中有哪些特殊的变量 ?

  • 答:下面的表列出了Bourne shell为命令行设置的特殊变量。
内建变量 解释
$1 命令行中的脚本名字
$1 第一个命令行参数
$2 第二个命令行参数
…… ……
$9 第九个命令行参数
$# 命令行参数的数量
$* 所有命令行参数,以空格隔开

Q:18 在shell脚本中,如何测试文件 ?

  • 答:test命令可以用来测试文件。基础用法如下表格:
Test 用法
-d 文件名 如果文件存在并且是目录,返回true
-e 文件名 如果文件存在,返回true
-f 文件名 如果文件存在并且是普通文件,返回true
-r 文件名 如果文件存在并可读,返回true
-s 文件名 如果文件存在并且不为空,返回true
-w 文件名 如果文件存在并可写,返回true
-x 文件名 如果文件存在并可执行,返回true

Q:19 在shell脚本中,如何写入注释 ?

  • 答:注释可以用来描述一个脚本可以做什么和它是如何工作的。每一行注释以#开头。例子如下:
#!/bin/bash
# This is a command
echo “I am logged in as $USER”

Q:20 如何让 shell 就脚本得到来自终端的输入?

  • 答:read命令可以读取来自终端(使用键盘)的数据。read命令得到用户的输入并置于你给出的变量中。例子如下:
# vi /tmp/test.sh
#!/bin/bash
echo ‘Please enter your name’
read name
echo “My Name is $name”
# ./test.sh
Please enter your name
LinuxTechi
My Name is LinuxTechi

Q:21 如何取消变量或取消变量赋值 ?

  • 答:“unset”命令用于取消变量或取消变量赋值。语法如下所示:
# unset <Name_of_Variable>

Q:22 如何执行算术运算 ?

  • 答:有两种方法来执行算术运算:

使用expr命令(# expr 5 + 2) 2.用一个美元符号和方括号($[ 表达式 ])例如:test=$[16 + 4]test=$[16 + 4]

Q:23 do-while语句的基本格式 ?

  • 答:do-while语句类似于while语句,但检查条件语句之前先执行命令(LCTT 译注:意即至少执行一次。)。下面是用do-while语句的语法
do
{
statements
} while (condition)

Q:24 在shell脚本如何定义函数呢 ?

  • 答:函数是拥有名字的代码块。当我们定义代码块,我们就可以在我们的脚本调用函数名字,该块就会被执行。示例如下所示:
$ diskusage () { df -h ; }

Q:25 如何在shell脚本中使用BC(bash计算器) ?

  • 答:使用下列格式,在shell脚本中使用bc:
variable=`echo “options; expression” | bc`
分享到:
评论

相关推荐

    MK实战Shell 高阶开发实战-资料

    【MK实战】Shell 高阶开发实战-资料

    实战Shell脚本—sed,awk使用

    在IT行业中,Shell脚本是Linux或Unix操作系统中不可或缺的一部分,它允许用户通过命令行界面自动化执行一系列操作。本文将深入探讨两个强大的文本处理工具——`sed`和`awk`,它们经常被用于Shell脚本中,以实现对...

    Shell 入门实战到精通

    本文详细介绍了 Shell 编程语⾔、Shell 脚本常⽤命令、Shell 正则表达式、Shell 编程、Shell 变量、Shell 数组、Shell 进阶实战和 Shell 案例实战等知识点,为读者提供了一个系统的 Shell 编程指南。

    实战LINUX_SHELL编程与服务器管理.pdf

    本书《实战Linux Shell编程与服务器管理》是由卧龙小三撰写,并由梁昌泰、张琦和黄琨改编而成。本书旨在帮助读者轻松掌握Bash Shell编程,建立扎实的基础,并通过丰富的范例来展示Shell编程技巧,学习如何设计自动化...

    实战Linux Shell编程与服务器管理

    实战Linux Shell编程与服务器管理 自己做的书签

    实战Linux Shell编程与服务器管理-脚本文件.rar

    在本资源包中,我们聚焦于“实战Linux Shell编程与服务器管理”。Shell编程是Linux操作系统中的核心技能之一,它允许用户通过命令行界面自动化执行任务,极大地提高了工作效率。以下是关于这个主题的一些关键知识点...

    让您了解shell的一个小程序

    这是一个shell运行的脚本让你了解shell脚本的所有知识点,如果您是一名linux或即将成为一名linux程序员,这对您非常有益。

    Shell高级编程实战视频.zip

    10-Shell的各种表达式综合脚本开发实战讲解 11-利用所学知识打印一二级菜单操作企业案例 12-if条件句语法介绍及形象比喻 13-监控系统内存并报警企业案例脚本开发实战 14-利用if监控web和db的多种方法介绍及实践1 15-...

    shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查) student.sql文件

    shell操作数据库实战之shell脚本与MySQL数据库交互(增删改查) student.sql,可以导入到数据库中做假数据,方便处理练习数据库操作

    Shell 高阶开发实战,轻松应对集群化,分布式环境

    "Shell高阶开发实战,轻松应对集群化,分布式环境"这个课程旨在深入讲解如何利用Shell脚本进行高效的操作和管理。以下是对该课程可能涵盖的知识点的详细说明: 1. **Shell基础**:首先,课程会从Shell的基础知识...

    实战LINUX+SHELL编程与服务器管理(2/2)

    5. **部分3和部分4**:根据提供的压缩包子文件名,"实战LINUX%2BSHELL编程与服务器管_.part3.rar"和"实战LINUX%2BSHELL编程与服务器管_.part4.rar"很可能是资源的延续,这部分内容可能包括更高级的Shell编程技巧、...

    老男孩shell高级编程实战视频百度云盘分享

    根据提供的文件信息,我们可以推断出这是一份关于“老男孩shell高级编程实战视频”的资源分享,主要聚焦于Shell编程的高级应用与实践。接下来,我们将深入探讨与该主题相关的几个核心知识点,包括Shell编程的基本...

    实战Linux Shell编程与服务器管理-作者:卧龙小三(1)

    要达到这个境界,管理者必须具备相当程度的Shell操控能力与Shell程序设计能力,卧龙小三拥有丰富的主机管理实务经验,以及多年的教学经验,相信这本《实战Linux Shell编程与服务器管理》必能引领读者轻松跨越Bash ...

    实战LINUX_SHELL编程与服务器管理

    实战LINUX_SHELL编程与服务器管理

    跟老男孩学Linux运维:Shell编程实战.pdf 高清 带书签

    资深运维架构实战专家及教育培训界*专家十多年的运维实战经验总结,全面系统地讲解运维工作中Shell编程所需的知识点和Shell编程的各种企业级案例。

    实战LINUX_SHELL编程与服务器管理 带书签

    实战LINUX_SHELL编程与服务器管理 带书签

    Linux shell 编程实战

    在linux系统中,我们一般都是用C语言写服务端程序,但是一般我们不直接启动这个程序,而是通过一个shell脚本启动和关闭

    Linux shell 编程实战系列

    在linux系统中,我们一般都是用C语言写服务端程序,但是一般我们不直接启动这个程序,而是通过一个shell脚本启动和关闭

    Shell编程实战.zip

    本压缩包"Shell编程实战.zip"很可能是为了帮助用户深入理解和掌握Shell编程技能而提供的一系列教程或实例。 在Shell编程中,你将学习到以下几个核心知识点: 1. **Shell脚本基础**:了解什么是Shell脚本,如何创建...

Global site tag (gtag.js) - Google Analytics