shell基础

1,bash

自定义变量

定义:变量名称=值
    变量名称:只能由字母,数字,下划线组成,不能以数字开头
    = :       赋值符号  前后不能有空白        
    值:         所有字符串和数字都可以,但是你应该给字符串加引号
    
引用变量:$变量名 或 ${变量名}
    [root@server shell]# a=8
    [root@server shell]# echo $a
    [root@server shell]# echo ${a}
     8
     
查看变量:       echo $变量名  set(所有变量:包括自定义变量和环境变量)
    #name=tingting
    #set | grep tingting        

取消变量:       unset 变量名
    #unset name

作用范围:       仅在当前shell中有效

变量替换之匹配截取:

[root@bogon ~]# a=abcdefg    //定义变量
[root@bogon ~]# echo ${a:5}     //输出变量内容第5字符之后内容
fg
[root@bogon ~]# echo ${a:2:4}   //输出变量"a" (第二位之后开始截取,截取四位)
cdef

bash测试

数字
-eq 等于               -ne 不等于
-ge 大于等于           -gt 大于
-le  小于等于          -lt  小于
例:
[root@bogon ~]# cat bash.sh 
#!/bin/bash
if [ 5 -eq 3 ];then
    echo 你是对的
else
    echo 你是错的
fi
[root@bogon ~]# sh bash.sh 
你是错的
文件
-f 存在且是正规文件
-d 存在且是目录
-h 存在且是符号链接
-b 块设备
-c 字符设备
-S socket
-p pipe

bash判断

条件判断

if

if代码返回0表示真,非0为假

语法:
if [ *判断* ]; then
  *动作*
else
  *动作*
fi
##elif:多条件判断

case

case 语句是 shell 中流控制的第二种方式,语法如下:
case word in
     pattern1)
          list1
          ;;
     pattern2)
          list2
          ;;
     ... ...
     patternN)
          listN
         ;;
    *)
         list*
         ;;
esac
例:
#!/bin/bash
a=8
case $a in
5)
   echo "这是5";echo "随便写";;
6)
   echo "这是6";;
*)
   echo 什么都不是;;
esac

bash循环

循环

for 循环:

for...do...done
while...do...done

例
练习编写脚本:批量生成账户并给定账户密码
#!/bin/bash
for i in {1..10}
do
        useradd user$i
        if [ $? -eq 0 ];then
                echo 添加用户 user$i 成功!
        else
                echo 添加用户 user$i 失败!
                exit 6
        fi

        echo 1 | passwd  --stdin user$i

        if [ $? -eq 0 ];then
                true
        else
                exit 5
        fi
done

while循环

while cmd
do
    list
done

例:
[root@bogon ~]# cat test.sh  //循环输出0-9
#!/bin/bash
x=0
while [ $x -lt 10 ]
do
      echo $x
      x=`expr $x + 1`
done
[root@bogon ~]# sh test.sh 
0
1
2
3
4
5
6
7
8
9


注:循环控制:
break
直接跳出大循环
continue
跳出当前这一次循环

函数

函数
定义函数
调用函数
取消函数
函数传参

命名空间 
    local
    
    #!/bin/bash
    a=8
    test(){
            local a
            echo $a
            a=9
            echo $a
    }
    echo $a
    test
    echo $a
    
返回值 
    return value
    value不能超过255
myfunc()        #函数定义
{
echo "This is my first shell function"
}

myfunc          #函数调用

unset myfunc    #取消函数
例:
readPass() {
PASS=""
echo -n "Entry Password: " //交互
stty -echo
read PASS
stty echo
echo
}
readPass
echo Password is $PASS
image.png
使用$1,$2传参
#!/bin/bash
test(){
        echo $1 $2
}
test 5  6
使用$*传参
[root@wing shell]# cat a.sh
#!/bin/bash
a=(1 2 3 4 5)
hello(){
    for i in $*   #因为是一个数组,不知道有多少个参数,所以使用$*获取所有参数
    do
        echo $[$i*2]
    done
}
hello ${a[*]}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,658评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,482评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,213评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,395评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,487评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,523评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,525评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,300评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,753评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,048评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,223评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,905评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,541评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,168评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,417评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,094评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,088评论 2 352

推荐阅读更多精彩内容

  • 1,蛇帮,两种写法都可以。#! /bin/sh#! /bin/bash 2,执行,两种方法。①/bin/sh te...
    清风徐来_简阅读 261评论 0 0
  • 磁盘位置 vim test.sh $0 表示文件所在位置信息 ./test.sh%表示删除从后匹配的最小字符串,...
    宇宙小神特别萌阅读 438评论 0 2
  • bash语言 常用命令 1.head 默认取文件前10行内容 2.tail 默认取文件末尾10行的内容例:取文件8...
    芝芝复吱吱阅读 888评论 0 1
  • Lesson1 - shell 脚本简介 Shell script 是解释型语言,而不是编译型语言 shell 分...
    c263ae2147d8阅读 454评论 0 1
  • shell脚本基础 shell脚本可以输入多个命令并处理每个命令的结果。 创建shell脚本时,需要在文件的第一行...
    伊落阅读 435评论 0 0