前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Shell入门知识

Shell入门知识

作者头像
李家酒馆酒保
发布2017-12-28 10:53:27
8520
发布2017-12-28 10:53:27
举报
文章被收录于专栏:李家的小酒馆

Shell 简介

Shell作为命令语言,它交互式地解释和执行用户输入的命令;作为程序设计语言,它定义了各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。

常常作为批处理命令来使用,用来提高生产效率!

入门

下面是Shell的一段简单入门程序,我们在Linux上面使用vi test.sh然后将下面的代码打进去,运行sh test.sh 即可

代码语言:javascript
复制
#!/bin/bash    

echo "Hello World !"

上面这段程序是输出HelloWorld,其中#!/bin/bash 指定编译器,必须在脚本的第一行,echo输出信息,这里为输出Hello World

如何运行这段程序呢, 第一步首先进入到该脚本所在的目录,比如cd /root/shelltest ,运行命令sh test.sh 这样就可以进行输入了。

程序中的变量

定义全局变量

全局变量一直存在,不会因为切换shell终端或者退出登录而消失,全局变量需要在 /root/.bush_profile 、/etc/bashrc、/etc/profile、/etc/profile.d文件中设置,设置的格式为export name=value

在/etc/profile中定义完成后,需要重新加载配置文件 source /etc/profile

其中在/etc/profile.d设置shell脚本可以在启动shelle客户端的时候就执行这个脚本,这个文件夹中存储的都为脚本。

创建脚本内容如下

则新打开客户端的时候则会执行这个脚本,输出对应的内容。

定义局部变量, 局部变量在退出Shell客户端时会失效

单引号双引号的区别

单引号:原样输出

双引号:如果里面有变量,会输出变量

没有引号:输出变量

传递的参数

可以在调用脚本的时候给脚本传递参数,脚本内使用$1 $2 ...... 接受传递的参数,当参数超过9的时候,需要用花括号括起来 ${10}

特殊的调用参数:

代码语言:javascript
复制
    $0:返回Shell文件名称
    $$:当前脚本的PID
    $#:传递的所有参数
    $@:程序中的所有参数,这是将参数传递给其他程序的最佳方式。
    $! :执行的上一个命令的PID
    $?:上一次指令的返回值
    $_:此命令前面的最后一个参数
    $* :获取所有的参数
不同脚本之间访问变量

使用sh命令启动的脚本,则在脚本结束其内部的属性都会消失,其他的脚本不能访问其内部的属性。

使用source 命令启动脚本,则在脚本结束后其属性不会失效,同时其他的脚本也能访问到。

取消变量

使用unset可以取消变量,这个变量包括环境变量和局部变量

数组

数组中可以存放多个值。Bash Shell 只支持一维数组(不支持多维数组),初始化时不需要定义数组大小(与 PHP 类似),数组下标从0开始。

定义数组

代码语言:javascript
复制
    array=(value1 value2 value3)
    
    array_name[0]=value0

读取数组

${array_name[index]}

获取数组中全部的元素

${my_array[@]}

获取数组的长度

${#my_array[*]}

流程控制

if

如果else语句中没有执行语句,不可以写

代码语言:javascript
复制
if condition
then
    command1 
    command2
    ...
    commandN 
fi

------------------

if condition
then
    command1 
    command2
    ...
    commandN
else
    command
fi

------------
if condition1
then
    command1
elif condition2 
then 
    command2
else
    commandN
fi
for
代码语言:javascript
复制
for var in item1 item2 ... itemN
do
    command1
    command2
    ...
    commandN
done
while
代码语言:javascript
复制
while condition
do
    command
done
until

类似do-while循环,在最后判断条件,最少执行一次

代码语言:javascript
复制
until condition
do
    command
done
case
代码语言:javascript
复制
case 值 in
模式1)
    command1
    command2
    ...
    commandN
    ;;
模式2)
    command1
    command2
    ...
    commandN
    ;;
esac

函数

代码语言:javascript
复制
demoFun(){   // 定义  
    echo "这是我的第一个 shell 函数!"
}
echo "-----函数开始执行-----"
demoFun   // 调用,如果需要传递参数直接在后面跟就好  demoFun 1 2 3
echo "-----函数执行完毕-----"

运算符

  • expr 是一款表达式计算工具,使用它能完成表达式的求值操作。
  • expr 2 + 2 使用方法 , 需要注意的为1.表达式和运算符之间要有空格 2. 需要用``引起来
关系运算符

使用方法:

代码语言:javascript
复制
if [ $a -eq $b ]
then
   echo "$a -eq $b : a 等于 b"
else
   echo "$a -eq $b: a 不等于 b"
fi
布尔运算符

使用方法

代码语言:javascript
复制
if [ $a -lt 100 -a $b -gt 15 ]
then
   echo "$a 小于 100 且 $b 大于 15 : 返回 true"
else
   echo "$a 小于 100 且 $b 大于 15 : 返回 false"
fi
逻辑运算符
字符串运算符
文件测试运算符
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-11-06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Shell 简介
  • 入门
  • 程序中的变量
    • 定义全局变量
      • 定义局部变量, 局部变量在退出Shell客户端时会失效
      • 单引号双引号的区别
      • 传递的参数
        • 不同脚本之间访问变量
          • 取消变量
          • 数组
          • 流程控制
            • if
              • for
                • while
                  • until
                    • case
                    • 函数
                    • 运算符
                      • 关系运算符
                        • 布尔运算符
                          • 逻辑运算符
                            • 字符串运算符
                              • 文件测试运算符
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档