美文网首页
四.shell脚本语言

四.shell脚本语言

作者: 听木子说心语 | 来源:发表于2019-12-22 22:05 被阅读0次

shell脚本:

  • 文件包含
  • cat命令介绍
  • 获取用户输入_read命令
  • printf命令使用
  • 函数
  • 输入/输出重定向

文件包含

  • 语法一: ./filename
文件A ->A.sh
脚本内容:
                #!/bin/bash
                echo "我是文件A"
文件B ->B.sh
脚本内容:
                #!/bin/bash
                #文件B包含文件A
                ./A.sh(这里指的是A.sh的路径)
                echo "我是文件B"
然后执行脚本命令
                ./B.sh

执行完./B.sh后,会输出

我是文件A
我是文件B 
  • 语法二: source filename.sh
注意: source是一个关键字
文件A->A.sh
脚本内容:
                #!/bin/bash
                echo "我是文件A"
文件B ->B.sh
脚本内容:
                #!/bin/bash
                #文件B包含文件A
                source ./A.sh
                echo "我是文件B"
执行脚本命令:
                ./B.sh

执行完./B.sh后,同样会输出

我是文件A
我是文件B 

cat命令介绍

作用:

  • 查看文件内容
  • 连接文件
  • 创建一个文件或者多个文件
  • 重定向输出到终端
  • 重定向到文件
语法: cat [选项] [文件]
案例一: cat A.sh
查看文件内容
#!/bin/bash
echo "我是文件A"
案例二:cat -n A.sh
-n :可以显示文件内容和行号
     1  #!/bin/bash
     2  echo "我是文件A"
案例三:cat -b A.sh
-b选项: 和"-n"类似功能,但是只标记非空白行行号
     1  #!/bin/bash

     2  echo "我是文件A"
案例四: cat -e A.sh
-e选项:在每一行内容最后加上了一个$符号,在需要将多行内容转换为一行
内容的时候,非常有用
#!/bin/bash$
$
echo "?M-^HM-^Q?M-^X??M-^VM-^G件A"$
案例五:
接收标准输入,同事还会输出标准输出
退出:control + c

获取用户输入_read命令

  • 接收一个输入内容
写法一:
            echo "请输入您的名字"
            read name
            echo "您的名字是:${name}"
read_1.png
写法二:
            read -p "请输入您的名字" name
            echo  "您的名字是: ${name}"
read_2.png
  • 超时->输入的时候,你过了n秒(这里是6秒)没有输入,就会提示超时
if read -t 6 -p "请输入你的名字: "  name
then
    echo "您的名字是:${name}"
else
    echo
    echo "超时"
fi
超时.png

当6秒之内容输入


6秒之内输入.png
  • 隐藏输入的内容->"-s"->类似于输入密码
read -s -p "请输入您密码: " pwd
echo
echo "您的密码是: ${pwd}"
隐藏输入密码.png

输入密码后


输入密码_2.png
  • 从文件里面读取内容->通过cat命令读取文件内容,然后通过while循环一行行读取
cat B.sh | while read str
do
   echo "内容:${str}"
done
读取内容.png

printf命令使用

  • printf命令和echo命令区别?
区别一:
printf-->不会自动换行
echo  -->自动换行
区别二:
printf-->一般用于格式打印
echo  -->用于标准输出
  • printf语法结构
printf format-string 参数列表
  • printf案例
案例一:

#打印输出表头
printf "%-10s %-8s %-4s \n" 姓名 性别 体重kg
#打印输出内容->对齐
printf "%-6s  %-8s %-4s \n" 111  男   64kg
printf "%-10s %-8s %-4s \n" 222  男   65kg
printf "%-1s  %-8s %-4s \n" 444 男  100kg
打印输出.png
注意一:
"%-10s"指的是一个宽度为10的字符,
"-"表示左对齐,
"s"表示字符串(字符)
注意二:
"%-4.2f"指的是一个宽度为4,
小数点为2位,
"f"表示小数
案例二:
printf format-string为双引号
printf "%d %s \n" 1 "lk"
printf format-string为单引号
printf '%d %s \n' 1 "lk"
printf format-string没有引号
printf %d "Dream"
多个参数输出
printf "%d %s \n" 1  "lk"
  • printf转义字符
printf "\"<%s>\" " "lk"

函数

  • 语法结构
       [function]方法名称(){
       }
  • 案例分析
定义方法
function test(){
      echo "Hello world"
}
调用方法
echo "调用前"
test
echo "调用后"

输入/输出重定向

输入重定向分析.png
  • 输入/输出重定向->控制台/文件
1.输入重定向->语法
语法结构:wc 名称
2.<:输入重定向
命令代码: wc A.sh
将A中内容读取到控制台
wc读取到了三个重要信息
第一个参数: 文本行数
第二个参数:文本词数
第三个参数:文本字节数
3.<<:创建文件
  • 输出重定向
输出重定向分析.png
1. > 我们把方向指向一份文件,那么将文件中的内容删除,写入新的内容
脚本文件A.sh
#!/bin/bash
echo "我是文件A"
脚本文件B.sh
#!/bin/bash
echo "我是文件B"
echo "Hello lk" >A.sh
执行脚本代码
./B.sh
替换内容->将B.sh输出内容替换了A.sh中内容
2. ">>":追加

相关文章

网友评论

      本文标题:四.shell脚本语言

      本文链接:https://www.haomeiwen.com/subject/esropxtx.html