hylan:shell脚本鸡肋--结构化命令(续)

2024-05-02 21:58

本文主要是介绍hylan:shell脚本鸡肋--结构化命令(续),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

  1.   循环处理数据效果:
  2. marvin@marvin-pc:~$ cat /etc/passwd | grep marvin
    marvin:x:1000:1000:marvin,,,:/home/marvin:/bin/bash
    marvin@marvin-pc:~$ ifs=$IFS
    marvin@marvin-pc:~$ IFS=:
    marvin@marvin-pc:~$ for haha in $(cat /etc/passwd | grep marvin)
    > do
    > echo "this is $haha"
    > done
    this is marvin
    this is x
    this is 1000
    this is 1000
    this is marvin,,,
    this is /home/marvin
    this is /bin/bash
  3.   嵌套循环处理文件数据: 
  4. #!/bin/bash
    #_*_coding:utf-8_*_
    #写个程序拆分/etc/passwd文件中的数据
    IFS_old=$IFS
    IFS=$'\n'
    for split_out in $(cat /etc/passwd)
    do
        echo "文件中的数据 $split_out"
        IFS=:
        for split_in in $split_out
        do
           echo "   $split_in"
        done
    done
    IFS=$IFS_old
  5.   查找可执行文件 
  6. #!/bin/bash
    #_*_coding: utf-8_*_
    #查找可执行的文件
    IFS_old=$IFS
    IFS=:

    for folder in $PATH
    do
        echo "$folder:"

        for file in $folder/*
        do
            if [ -x $file ]
            then
                echo "    $file"
            fi
        done
    done

  7.   一次性创建多个系统用户 
  8. #!/bin/bash
    #_*_coding: utf-8_*_
    #通过文件一次性创建多个账号

    input="users.csv"
    while IFS=',' read -r userid name
    do
        echo "新增用户:$userid"
        useradd -c "$name" -m $userid
    done < "$input"
  9.  读取.csv文件,创建insert语句 
  10. csv文件内容如下:
  11. marvin@marvin-pc:~/hylan$ cat members.csv
    Blum,Richard,123 Main St.,Chicago,IL,60601
    Blum,Barbara,123 Main St.,Chicago,IL,60601
    Bresnahan,Christine,456 Oak Ave,Columbus,OH,43201
    Bresnahan,Timothy,456 Oak Ave,Columbus,OH,43201

  12. marvin@marvin-pc:~/hylan$ cat sql_test
    #!/bin/bash

    outfile='members.sql'
    IFS=','

    while read lname fname address city state zip
    do
        cat >> $outfile << EOF
    insert into members(lname,fname,address,city,state,zip) values
    ('$lname','$fname','$address','$city','$state','$zip');
    EOF
    done
  13. 执行脚本:marvin@marvin-pc:~/hylan$ ./sql_test < members.csv

  14. 执行结果:marvin@marvin-pc:~/hylan$ cat members.sql
    insert into members(lname,fname,address,city,state,zip) values
    ('Blum','Richard','123 Main St.','Chicago','IL','60601');
    insert into members(lname,fname,address,city,state,zip) values
    ('Blum','Barbara','123 Main St.','Chicago','IL','60601');
    insert into members(lname,fname,address,city,state,zip) values
    ('Bresnahan','Christine','456 Oak Ave','Columbus','OH','43201');
    insert into members(lname,fname,address,city,state,zip) values
    ('Bresnahan','Timothy','456 Oak Ave','Columbus','OH','43201');
    insert into members(lname,fname,address,city,state,zip) values
    ('','','','','','');


    注意最后多了一行空值。可能需要手动处理一下。之所以会产生这条空行,是因为members.csv文件我不是用vim创建的文件,手工打开的编辑器,误留了空行(比较容易无意中留空行),如果是用vim编辑器创建的文件(不容易误留空行),没有放空行就不会出现这种空行。







这篇关于hylan:shell脚本鸡肋--结构化命令(续)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/955223

相关文章

Linux使用nohup命令在后台运行脚本

《Linux使用nohup命令在后台运行脚本》在Linux或类Unix系统中,后台运行脚本是一项非常实用的技能,尤其适用于需要长时间运行的任务或服务,本文我们来看看如何使用nohup命令在后台... 目录nohup 命令简介基本用法输出重定向& 符号的作用后台进程的特点注意事项实际应用场景长时间运行的任务服

Redis的Hash类型及相关命令小结

《Redis的Hash类型及相关命令小结》edisHash是一种数据结构,用于存储字段和值的映射关系,本文就来介绍一下Redis的Hash类型及相关命令小结,具有一定的参考价值,感兴趣的可以了解一下... 目录HSETHGETHEXISTSHDELHKEYSHVALSHGETALLHMGETHLENHSET

如何使用 Bash 脚本中的time命令来统计命令执行时间(中英双语)

《如何使用Bash脚本中的time命令来统计命令执行时间(中英双语)》本文介绍了如何在Bash脚本中使用`time`命令来测量命令执行时间,包括`real`、`user`和`sys`三个时间指标,... 使用 Bash 脚本中的 time 命令来统计命令执行时间在日常的开发和运维过程中,性能监控和优化是不

bat脚本启动git bash窗口,并执行命令方式

《bat脚本启动gitbash窗口,并执行命令方式》本文介绍了如何在Windows服务器上使用cmd启动jar包时出现乱码的问题,并提供了解决方法——使用GitBash窗口启动并设置编码,通过编写s... 目录一、简介二、使用说明2.1 start.BAT脚本2.2 参数说明2.3 效果总结一、简介某些情

PHP执行php.exe -v命令报错的解决方案

《PHP执行php.exe-v命令报错的解决方案》:本文主要介绍PHP执行php.exe-v命令报错的解决方案,文中通过图文讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下... 目录执行phpandroid.exe -v命令报错解决方案执行php.exe -v命令报错-PHP War

CentOS系统使用yum命令报错问题及解决

《CentOS系统使用yum命令报错问题及解决》文章主要讲述了在CentOS系统中使用yum命令时遇到的错误,并提供了个人解决方法,希望对大家有所帮助,并鼓励大家支持脚本之家... 目录Centos系统使用yum命令报错找到文件替换源文件为总结CentOS系统使用yum命令报错http://www.cppc

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

30常用 Maven 命令

Maven 是一个强大的项目管理和构建工具,它广泛用于 Java 项目的依赖管理、构建流程和插件集成。Maven 的命令行工具提供了大量的命令来帮助开发人员管理项目的生命周期、依赖和插件。以下是 常用 Maven 命令的使用场景及其详细解释。 1. mvn clean 使用场景:清理项目的生成目录,通常用于删除项目中自动生成的文件(如 target/ 目录)。共性规律:清理操作

Linux服务器Java启动脚本

Linux服务器Java启动脚本 1、初版2、优化版本3、常用脚本仓库 本文章介绍了如何在Linux服务器上执行Java并启动jar包, 通常我们会使用nohup直接启动,但是还是需要手动停止然后再次启动, 那如何更优雅的在服务器上启动jar包呢,让我们一起探讨一下吧。 1、初版 第一个版本是常用的做法,直接使用nohup后台启动jar包, 并将日志输出到当前文件夹n

利用命令模式构建高效的手游后端架构

在现代手游开发中,后端架构的设计对于支持高并发、快速迭代和复杂游戏逻辑至关重要。命令模式作为一种行为设计模式,可以有效地解耦请求的发起者与接收者,提升系统的可维护性和扩展性。本文将深入探讨如何利用命令模式构建一个强大且灵活的手游后端架构。 1. 命令模式的概念与优势 命令模式通过将请求封装为对象,使得请求的发起者和接收者之间的耦合度降低。这种模式的主要优势包括: 解耦请求发起者与处理者