首页 > 系统相关 >linux shell 编程学习总结

linux shell 编程学习总结

时间:2024-04-21 14:11:06浏览次数:21  
标签:src shell run -- 编程 echo sh func linux

1 文件和数组

1.1 读文件并将文件内容保存到数组,遍历数组

src.f文件内容

./src/xxx_1.md
./src/xxx_2.md
./src/xxx_3.md
./src/xxx_4.md
./src/xxx_5.md

run.sh

#!/bin/bash

### read flist to array
src_array=()
while read line; do
    src_array+=("$line")
done < $1

### print array
i=1
for itm in "${src_array[@]}"; do
    printf "line $i content: %s\n" "$itm"
    ((i++))
done

exit

运行run.sh结果

2 流程控制语句

2.1 判断文件和路径是否存在

run.sh

if [[ -e "$1" ]]; then
    echo "The file $1 exits."
else
    echo "The file $1 does not exist."
fi

if [[ ! -d "$2" ]]; then
    echo "The dir $2 does not exit."
else
    echo "The dir $2 exists."
fi

运行结果

2.2 逻辑判断

*run.sh

_str="hello world"
_int=996

if [[ "$_str" == "hello world" ]]; then
    echo "String Yes"
else
    echo "String No"
fi

if [[ $_int != 996 ]]; then
    echo "Int No"
else
    echo "Int Yes"
fi

运行结果

3 shell 用户命令行参数处理

3.1 不带option

run.sh

func_print_usage(){
    echo ""
    echo "Usage: run.sh <user> <age> <is_ICer>"
    echo ""
}

if [[ $# != 3 ]]; then
    func_print_usage
elif [[ "$3" != "yes" ]]; then
    echo ""
    echo "You should be good good study for IC"
    echo ""
else
    echo ""
    echo "user:    $1"
    echo "age:     $2"
    echo "is_ICer: $3"
    echo ""
fi

运行结果1

运行结果2

运行结果3

3.2 带option

run.sh

func_help(){
    printf "\n\n  Usage:\n"
    printf "    -h|--help          : Help usage\n"
    printf "    -f|--file <arg>    : Specify file\n"
    printf "    -d|--debug         : Debug mode on\n\n"
}


SHORTOPTS="h,f:,d"
LONGOPTS="help,file:,debug"
ARGS=$(getopt --options $SHORTOPTS --longoptions $LONGOPTS -- "$@")
eval set -- "$ARGS"
while true; do
    case $1 in
        -h|--help)
            func_help
            shift
            exit
            ;;
        -f|--file)
            echo "file: $2"
            shift 2
            ;;
        -d|--debug)
            echo "debug"
            shift
            ;;
        --)
            shift
            break
            ;;
    esac

done

运行结果1

运行结果2

运行结果3

运行结果4

运行结果5

4 shell 函数

run.sh

func_1(){
    echo ""
    echo "func name: $0"
    echo "agc1:      $1"
    echo "agc2:      $2"
    echo "agc3:      $3"
    echo "agc4:      $4"
}


func_2(){
    echo "Will be call func_1"
    func_1 123 "hello world" "" 996
}

echo ""
func_2
echo ""

运行结果

标签:src,shell,run,--,编程,echo,sh,func,linux
From: https://www.cnblogs.com/hiloong/p/18148891/linux_shell

相关文章

  • 在Linux中,发行版和内核有什么区别?
    在Linux世界中,内核版本和发行版之间的区别是理解Linux操作系统生态体系的关键点。以下是两者之间详尽的区别:1.Linux内核:内核是Linux操作系统的核心组件,它是操作系统中最基础的部分,负责管理和调度计算机硬件资源,如处理器、内存、硬盘驱动器和其他外设。它的主要职责包括:硬件抽......
  • 在Linux中,开源软件和自由软件的区别?
    在Linux和更广泛的软件领域中,开源软件(OpenSourceSoftware)和自由软件(FreeSoftware)是两个经常被提及且容易混淆的概念。尽管它们共享一些相似之处,但它们在理念和哲学上存在一些关键的区别。1.开源软件开源软件强调的是软件的源代码对用户可见,用户可以查看、修改和分发软件的源......
  • 在Linux中,什么是Linux shell?
    在Linux中,Shell是一个命令行解释器,它为用户提供了一个与操作系统交互的文本界面。用户可以通过Shell输入命令,Shell会解释这些命令并将其转换为操作系统能够理解的信号或进程,从而执行相应的操作。1.主要特点命令解释器:Shell读取用户输入的命令,将其转换为操作系统能够执行......
  • 在Linux中,Unix和Linux之间的关系是什么?
    Unix和Linux之间的关系是既有联系又有区别的。它们都是操作系统,但在设计哲学、版权和发展历程上存在一些差异。1.Unix起源:Unix最早是在20世纪70年代由AT&T的贝尔实验室开发的一种多用户、多任务的操作系统。设计:Unix以其简洁、模块化的设计和强大的文本处理能力而闻名。......
  • 结对编程 四则运算
    题目:小学老师要每周给同学出300道四则运算练习题。这个程序有很多种实现方式:C/C++C#/VB.net/JavaExcelUnixShellEmacs/Powershell/VbscriptPerlPython两个运算符,100以内的数字,不需要写答案。需要检查答案是否正确,并且保证答案在0——1000之间我们采用的是c++来实......
  • NanoPi-NEO 全志H3移植Ubuntu 22.04 LTS、u-boot、Linux内核/内核树、mt7601u USB-Wi-
    前言想在NanoPi-NEO上开发屏幕驱动,但是看了下文件目录发现没有内核树,导致最基础的file_operations结构体都无法使用,于是寻找内核树安装方法。但官方提供的内核为4.14太旧了apt找不到对应的linux-source版本(其实后面发现不需要用apt,可以在kernel.org上下载,但反正都装了那就当学习......
  • FFmpeg开发笔记(十六)Linux交叉编译Android的OpenSSL库
    ​《FFmpeg开发实战:从零基础到短视频上线》一书的例程主要测试本地的音视频文件,当然为了安全起见,很多网络视频都采用了https地址。FFmpeg若要访问https视频,就必须集成第三方的openssl库,但编译FFmpeg时却默认关闭了openssl。为了让App能够播放采用https的在线视频,需要编译安装并启......
  • 如何在linux中创建特定的脚本注释信息
    如何在linux中创建特定的脚本注释信息当然,以下是详细步骤在CentOS7系统中创建一个新的shell脚本模板并在Vim编辑器中配置自动加载模板的完整过程:步骤1:创建shell脚本模板首先,打开终端并创建一个模板文件,我们将其命名为.bash_script_template并放置在用户的家目录下:e......
  • Linux共享库、静态库、动态库详解
    1.介绍       使用GNU的工具我们如何在Linux下创建自己的程序函数库?一个“程序函数库”简单的说就是一个文件包含了一些编译好的代码和数据,这些编译好的代码和数据可以在事后供其他的程序使用。程序函数库可以使整个程序更加模块化,更容易重新编译,而且更方便升级。 ......
  • 性能测试——性能测试-linux监控工具-Centos7.x安装Grafana
    2个参考:小菠萝:https://www.cnblogs.com/poloyy/p/12219145.html  Centos7安装GrafanaGrafana官网下载路径:https://grafana.com/grafana/download1、直接执行以下命令进行安装:wgethttps://dl.grafana.com/oss/release/grafana-6.5.2-1.x86_64.rpmsudoyumlocalinstall......