当前位置: 首页 > article >正文

Shell入门

Shell是什么

  • Shell是一个命令行解释器,负责接收用户输入的命令,然后调用Linux内核去执行这些命令,再把执行结果返回给用户,Shell解释器有很多类(csh、ksh、bash、zsh),比如windows上也有powerShell,不同的Shell有些许差异,Linux中默认安装的是Bash
  • shell也支持条件判断、分支、定义函数、变量等功能
  • shell脚本的扩展名一般以 .sh结尾,但没有强制要求

应用

  • 针对批量的数据文件进行数据的转换、操作、生成报告
  • 针对项目环境进行初始化
  • 执行定时任务,对系统的状态进行定时检查
cat /etc/shells 查看支持哪些shell
# /etc/shells: valid login shells
/bin/sh             直接执行这些脚本就可以切换shell解释器
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/usr/bin/sh
/bin/dash
/usr/bin/dash
echo $SHELL   查看环境变量 看使用的哪个shell
/bin/bash

Shell变量

#! /bin/bash  声明使用的解释器
var1=1
var2="is a string"
var3=(1 2 3 4) #定义数组
echo $var1
echo $var2
echo ${var3[0]} #打印某个元素
echo ${var3[@]} #打印数组的所有变量

file=$(ls)  #将执行命令的返回值变为一个变量
echo ${file[@]} 

echo $0   #脚本名
echo $1   #传的第一个参数
echo $2
echo $3

echo "参数个数$#"

Shell 控制流语句

if 判断
a=30
b=20
if [ $a -gt $b ];then
    echo "更大"
fi

if [ $a -gt $b ];then
    echo "更大"
else
    echo "更小"
fi
for 循环
for num in 1 2 3 4;do
    echo "this number is: $num"
done

for file in $(ls) ;do  #遍历文件
    echo "file is: $file"
done
while 循环
num=1
while (($num<5));do
    echo $num
    let "num++"
done
case 分支
echo '输入1到4的数字'
echo '你输入的数字为'

read aNum
case $aNum in
    1) echo "你选择了1"
    ;;
    2) echo '你选择了2'
    ;;
    3) echo '你选择了3'
    ;;
    4) echo '你选择了4'
    ;;
    *) echo '输入错误'
    ;;
esac
function 函数
function compare(){
    if [ $1 -gt $2 ];then
        echo "更大"
    else
        echo "更小"
    fi
}

compare 3 2

Shell重定向

将原有终端中输入和输出的地方定向到其他的地方
在Linux中,所有进程的都默认有3各文件描述符,0 标准输入 1标准输出 2标准错误输出

如果想执行bash脚本得到的结果输出到一个文件里,就可以使用到:

bash test.sh >file.txt  # 输出的内容直接覆盖到file文件中
bash test.sh >>file.txt  #追加的形式输出到file文件中
bash test.sh 2>>error.log  #错误输出到文件中
bash test.sh >>file 2>&1  #错误的信息和正确的信息都输出到文件中 

http://www.kler.cn/a/298862.html

相关文章:

  • 中国农业科学院深圳农业基因组研究所合成生物学研究中心-随笔06
  • conda 环境报错error while loading shared libraries: libpython3.9.so.1.0
  • 【AI日记】24.12.24 kaggle 比赛 2-12
  • 解析mysqlbinlog
  • 重温设计模式--状态模式
  • LeNet网络搭建
  • Flutter集成Firebase中的Remote Config
  • Ai+若依(集成easyexcel实现excel表格增强)
  • Sky Takeaway
  • WEBSERVER完整体系
  • Java 创建对象方法的演变
  • ARM----时钟
  • Mybatis--SqlSessionFactory 、SqlSession
  • Java并发复习
  • 文案改写工具有哪些?5款智能改写工具迅速提升文案品质
  • Android11 MTK 安装apk时进行密码验证
  • 经验笔记:SQL调优
  • Java 入门指南:Java 并发编程 —— Copy-On-Write 写时复制技术
  • ElasticSearch的DSL查询④(DSL查询、RestClient的DSL查询)
  • Linux内核 -- 内存管理之 lru_cache_add_inactive_or_unevictable 函数
  • go切片的深入学习以及context库的使用
  • 一道迭代器失效练习题
  • SparkSQL FUNCTION相关操作
  • 基于Spring Boot的小区物业管理系统
  • 本地Gitblit使用
  • 使用Pandas高效读取和处理Excel数据