使用Shell进行编程

  Shell是我们操作Linux的必备工具,使用Shell,我们可以进行对Linux系统的一些操作命令,而使用Shell编程,我们可以将命令封装在一个句段中。Shell是一种脚本语言,正确的使用它是使用Linux的必须技能。


 

一些操作

  Linux系统拥有很多文本编辑工具,例如Vim和Emacs,这些工具可以在apt软件包中下载,我个人倾向使用Vim进行编辑。

  首先我们使用vim新建一个文件:

#! /bin/bash
#display a line
echo "hello world!"

  其中,第一句代表我们的使用环境是bash shell,而#后的语句是注释

  第三句就是我们的主要程序,echo代表把参数传递给标准输出,也就是我们的屏幕

  运行:(需要chmod为其增加可执行权限)

android shell 文本编辑器 linux shell编辑器_bash

  就可以看到经典的语句“hello world"

  

  其他的基本Shell操作有:

  变量替换符$

log="test"
echo $log

  输出为 test (像很多脚本语言一样,shell不需要事先声明变量)

 

  转义符\

log="test"
echo "the value of \$log is $log

  输出为 the value of \$log is test ,可以看到,第一个¥没有被转义,因为在\之后,忽略了$的特殊含义

 

  位置变量$0 $1 $2 ......

#! /bin/bash
echo "\$0 = $0"
echo "\$1 = $1"
echo "\$2 = $2"
echo "\$3 = $3"

  这里的$0 代指存放脚本的位置,$1 2 3 代表将传入的参数

  我将其保存为test3,接下来我们传入1 2 3(可以为任意值),运行:

  

android shell 文本编辑器 linux shell编辑器_Shell_02

  可以看到,输入了三个参数,而输出如我们所料。


 

程序结构:

  if结构

if 条件语句
then
    条件正确,执行这里
elif
    xxxxx
then
    xxxxx
else
    不满足,执行这里
fi

  

  case结构

#这里传入一个参数
case "$1" in
    x)
        当参数为x时,执行这里
        ;;
    y)
        当参数为y时,执行这里
        ;;
    *)
        *)可以匹配任意字符串,当不为x ,y 时,执行这里
        ;;
esac

 

  while与until结构

#注意,在shell中,0为真,而非0为假
whie 当条件为真,就执行(一般为判断语句)
do
    xxxxx
done


until 条件为假,执行,直到条件为真跳出
do
    xxxxx
done

 

私人定制

  Linux中的shell可以为我们带来更多的便利,例如,我们使用rm命令时是没有删除提示的,这使得一些误操作无法被阻止,这时,我们可以设计一个相对安全的delete命令:(参考:《Linux从入门到精通》)

  

android shell 文本编辑器 linux shell编辑器_x系统_03

  这个程序可以在我们删除时进行询问”are you sure to delete?",并且将要删除的文件移动到~/.trash中去,这样我们就可以恢复一些已经删除的文件。

 

  当然,shell的用法还有许多,这章就回顾这些。在Linux的使用中善用Shell脚本,我们的操作就会更加丝滑与简洁。