shell简单入门

shell定义

shell是一种应用程序,可以看做是连接用户和linux内核的桥梁。它提供了一个界面供用户访问操作系统内核的服务;
在这里插入图片描述

shell变量
  1. 变量声明:变量和等号之间不能有空格;
  2. 变量使用:
    name="neil"
    echo $name
    echo ${name}	# 花括号的目的是方便识别变量边界,推荐使用;
    
  3. 只读变量
    #!/bin/bash
    uname="fn"
    readonly uname
    uname ="shell"
    
    运行bash a.bash命令,得到以下结果:
    在这里插入图片描述
  4. 删除变量: unset var_name,变量删除后无法再调用,且该命令无法删除只读变量;
shell传参

shell脚本执行时可以通过命令行传参,在脚本内通过$n捕获第n个参数,其中$0是shell脚本文件名;
常见特殊字符:

字符含义
$#传递至脚本文件的参数个数
$*以但字符串形式显示所以传递至脚本文件的参数
$$脚本运行的当前进程ID
$!后台运行的最后一个进程的ID
$@将所有传递至脚本文件的参数单独返回,注意与$*的区别,不是以单字符串形式
$-与set命令功能相同,显示shell所使用的当前选项
$?显示最后命令的退出状态,0表示无错误,否则表示有错误
#!/bin/bash
echo "shell传参实例"
echo "文件名:$0"
echo "第一个参数:$1"
echo "第二个参数:$2"
echo "参数长度:$#"
echo "所有参数:$*"

for i in "$@"; do
    echo $i
done

echo "当前设置:$-"
echo "退出状态:$?"

在这里插入图片描述

shell字符串
  1. 单引号里的所有字符会原样输出,不会被转义;
  2. 双引号支持输出变量和转义字符;
  3. 字符串拼接
    在这里插入图片描述
  4. 提取子串
    uname="whoami"
    echo ${uname:1:4}	# 输出 "hoam"
    
  5. 获取长度
    echo ${#uname}		# 输出6
    
  6. 查找子串
    str="hello, shell"
    echo `expr index "$str" el`	# 在str中查找e或l,输出2
    
shell流程控制
  1. 条件语句

    #!/bin/bash
    a=10
    b=20
    if [ $a -eq $b ]
    then
    	   echo "a=b"
    elif [ $a -gt $b ]
    then
    	   echo "a>b"
    else
    	   echo "a<b"
    fi
    
  2. for循环

    for i in item1, item2 ... itemN
    do
    	xxx
    	xxx
    	echo $i
    	xxx
    done
    # 单行格式
    for i in arr; do cmd1;cmd2...done;
    
    # demo
    #!/bin/bash
    arr=(1 2 3 4 5)
    for i in ${arr[@]}; do
    	echo $i;
    done;
    
    

    在这里插入图片描述

  3. while循环

    #!/bin/bash
    var=1
    while(($var<5))
    do
    	echo $var
    	let "var++"
    done
    
  4. until循环
    条件为true时终止循环

    #!/bin/bash
    var=1
    until  [ $var -gt 3 ]
    do
    	echo $var
    	var=`expr $var + 1`
    done
    		
    
  5. case
    结束标志esac

    #!/bin/bash
    var=2
    
    case $var in
      1) echo "var=1"
      ;;
      2) echo "var=2"
      ;;
      3) echo "var=3"
      ;;
    esac
    
shell函数

shell函数需要先定义后使用,通过函数名直接调用;函数返回值可以在该函数执行后使用$?获取;
在这里插入图片描述
函数返回值获取
在这里插入图片描述

参数传递
在这里插入图片描述

echo
  1. 输出普通字符:echo helloecho "hello"
  2. echo输出转义字符:`echo -e “\e[1;32m hello\twolrd \e[0m”
  3. echo不进行转义:echo '\t' # 输出\t
  4. echo结果输出到指定文件:echo hello, shell > file
  5. 显示命令执行结果:echo `cat file` # 输出hello, shell
  6. echo以指定颜色输出:echo -e "\e[1;32m hello\twolrd \e[0m"支持的颜色列表包括:
字符颜色
30m黑色
31m红色
32m绿色
33m黄色
34m蓝色
35m洋红
36m青色
37m白色
管道符

作用:前一条命令的输出是后一条命令的操作对象;
格式:cmd1 | cmd2 | cmd3 …
示例:cat file | grep how
netstat -an | grep ESTABLISHED | wc -l


参考文献
  1. https://baike.baidu.com/item/shell/99702?fr=aladdin
  2. https://www.runoob.com/linux/linux-shell-echo.html
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Neil-

你们的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值