shell for循环

快,学会 shell

故事扮演 提交于 2020-04-07 23:47:04
本文分成入门篇和基础篇。基础篇包括变量、字符串处理、数学运算三部分。基础篇包括流控制、函数和函数库三部分。主要是基于例子进行讲解,其中有 4 个复杂一点的脚本,看懂了也就入门了。 我们先来聊一聊 shell 和 shell script 的概念。计算机的运行离不开硬件,我们通过操作系统(OS,Operating System)操作硬件,而我们所说的 linux 严格来说是操作系统(OS)的核心部分——内核(Kernel)。我们无法直接操作 kernel,需要借助于 kernel 外的一层壳 shell 才能与 kernel 进行交互。如果把操作系统(OS)看做是一家公司,shell 就是前台,kernel 就是董事会。当我们访问公司的时候,先和前台(shell)打个招呼,前台通知董事会(kernel),董事会来控制公司(OS)。 俗话说“铁打的营盘流水的兵”,就是公司人来人往,都不会影响公司的运转。对于操作系统也一样,我们可以替换操作系统的前台(shell),甚至董事会(kernel)。如果你想知道你的系统中用到的是什么 shell 可以访问 /etc/shells 文件。,我的电脑上就有下面几种 shell: # /etc/shells: valid login shells /bin/sh /bin/dash /bin/bash /bin/rbash /bin/zsh /usr

脚本编程进阶

冷暖自知 提交于 2020-04-07 14:33:59
1、chmod -rw /tmp/file1,编写脚本/root/bin/per.sh,判断当前用户对/tmp/fiile1文件 是否不可读且不可写 #!/bin/bash [ ! -r /tmp/file1 ] && [ ! -w /tmp/file1 ] && echo "不可读写" || echo "可读写" [root@centos7 shell]# chmod -rw /tmp/file1 [root@centos7 shell]# ll /tmp/file1 ----------. 1 root root 0 Aug 10 16:22 /tmp/file1 [root@centos7 shell]# bash per.sh 可读写 [root@centos7 shell]# su cent [cent@centos7 shell]$ bash per.sh 不可读写 2、编写脚本/root/bin/nologin.sh和login.sh,实现禁止和充许普通用户登录系统 思路:当/etc/目录下存在 nologin 文件时,普通用户会无法登陆,因此,我们只需要通过删除或增加该文件来限制普通用户是否可登陆 [root@centos7 shell]# cat login.sh nologin.sh #!/bin/bash [ -e /etc/nologin ] && echo

shell_script1

倖福魔咒の 提交于 2020-04-02 07:32:55
1、简介 2、read 3、运算工具 4、if/then结构 5、while循环 6、for循环 一、简介 1、什么是shell shell是用户与系统交互作用的界面。shell是一种命令解释程序,同时也是一种高级程序设计语言 2、shell常见种类 Bourne Shell(/usr/bin/sh或/bin/sh) Bourne Again Shell(/bin/bash) C Shell(/usr/bin/csh) K Shell(/usr/bin/ksh) Shell for Root(/sbin/sh) 其中:Bash在日常工作中被广泛使用; 同时,Bash也是大多数Linux系统默认的Shell; 3、shell局限性 1.1、需要耗费大量资源的任务,特别是对执行速度要求较高的场合 1.2、涉及大量的数学计算 1.3.、关键性应用(数据库,网站等) 1.4.、设计图形或者GUI的应用 1.5.、需要直接访问硬件 1.6.、开发闭源的应用(相对于开源) 4、基础 文件系统:Linux 的文件系统是一个包含了目录和文件的分层的组织结构,位于最顶端的叫做根目录(root directory),用斜杠/ 来表示 目录: 是一种包含目录项的文件,每个目录项中都包含了文件名 文件名: 目录的内容称为目录项,目录项包含了文件名,只有两种字符不允许出现在文件名中:斜杠,空字符(ASCII

C2 shell

家住魔仙堡 提交于 2020-04-01 01:04:31
1.什么是shell? 用户与内核之间的一个接口。最流行和常用的: bash。 2.重定向 > 重定向到另外的文件。0,1,2对一个程序来说是最常用的三个文件描述符! >>是把内容附加到文件的尾部而不会覆盖文件原有的内容。 这命令啥意思? #kill -HUP 1234 >kill.std 2>kill.stderr #kill -l 1234 > kill.std 2>&1 第一条语句的解读:>kill.std等同于1>kill.std,标准输出1是默认的可以不写! 第二条语句的解读: 将标准错误输出2绑定到标准输出1,然后将标准输出重定向到kill.std。 另外一个例子: [chengmo@centos5 shell]$ ls test .sh test1.sh > /dev/null 2>&1 #将错误输出2 绑定给 正确输出 1,然后将 正确输出 发送给 /dev/null设备 这种常用 注意: (1)shell遇到”>”操作符,会判断右边文件是否存在,如果存在就先删除,并且创建新文件。不存在直接创建。 无论左边命令执行是否成功。右边文件都会变为空。很霸道的地方! (2)“>>”操作符,判断右边文件,如果不存在,先创建。以添加方式打开文件,会分配一个文件描述符[不特别指定,默认为1,2]然后,与左边的标准输出(1)或错误输出(2) 绑定。 (3)当命令执行完

Shell 逐行读取单个文件或者多个文件内容

限于喜欢 提交于 2020-03-31 01:16:14
[root@zt94886 ~]# less 1.txt asdc sadca asdc 方式1:while循环逐行读取文件内容 #!/bin/bash cat ./1.txt | while read line; do echo $line done 方式2:while循环逐行读取文件内容 #!/bin/bash while read LINE; do echo $line done < ./1.txt 执行结果: [root@zt94886 ~]# sh 1.sh asdc sadca asdc 方式3:for循环批量读取多个文件内容: [root@zt94886 /script/day/var]# ls 1.txt 2.txt 3.txt [root@zt94886 /script/day/var]# pwd /script/day/var [root@zt94886 ~]# less /script/day/var/1.txt asdcasd asdcasdc asdcasdc asdcasdc asdcasdc asdcasdc asdcasdc [root@zt94886 ~]# less /script/day/var/2.txt 12123 123123 123123 [root@zt94886 ~]# less /script/day/var/3.txt asdc

shell脚本--循环

此生再无相见时 提交于 2020-03-24 14:21:21
1、基于C语言格式的for语句写法: for((i=0;i<10;i++));do【for(初始条件;条件判断语句;值变化语句);do】   循环体 done for循环的优点:不容易进入死循环 2、while语句的格式: 初始值 While 条件;do   循环体   Let i++(使初始值变化) Done 练习:写一个for循环遍历本网段中所有的up的电脑 1 2 3 4 5 6 7 8 9 10 11 12 13 #!/bin/bash declare -i sum =0 for i in $( seq 1 100); do ping -c 1 -w 1 10.6.12.$i &> /dev/null if [ $? - eq 0 ]; then let sum ++ echo "10.6.12.$i是通的" else echo "10.6.12.$i是不通的" fi done echo "总共有$sum台电脑在线" 求1-100的偶数和 1 2 3 4 5 6 7 #!/bin/bash for i in $( seq 0 2 100); do let sum +=$i echo $i done echo $ sum 打印九九乘法表 1 2 3 4 5 6 for i in {1..9}; do for ((j=1;j<=$i;j++)); do echo -n -e "

shell脚本编程高级篇

徘徊边缘 提交于 2020-03-21 12:40:58
SHELL脚本编程进阶 循环执行:简单来说就是把一些指令重复循环。 循环代码具体的指令有三种: for , while , until其中for, while用的最多。 for循环 for 变量名 in 列表;do 循环体 done 关键字的帮助都是用help来查询。 for循环语法:在shell编程中 for,in,do,done。这些都是他的关键字,其中循环的指零就放在do和done之间。 WORDS决定了循环次数。 循环的次数由in 后面跟的WORDS(字符串)的数量决定。字符串的个数决定了do和done之间的指令执行的次数。 $ :for认为是一个整体 br/>$@:for认为是独立的参数 for循环逻辑:↓↓ :这条命令意思是,将i变量为1 22 33 等于说i同时等于这3个变量然后用到$i把变量显示出来第一次i就是1第二次i就是22第三次i就是333这就是for循环的逻辑。 :还可以使用花括号或字母一次性显示完。 for脚本编辑语法:,脚本意思是i变量为arg而$@是独立的一个整体执行为脚本后面跟123代表arg is 独立的123。 :这是重复创建10次用户的意思i变量为{1..10}这个范围 :这是让FILE变量为userlist.txt这个文件然后执行这个文件里有多少用户,在来循环多少次。 :不用创建脚本也可以在外执行for结尾必须使用;隔开done

Shell脚本之awk详解

烈酒焚心 提交于 2020-03-17 00:39:20
一.基本介绍 1.awk: awk是一个强大的文本分析工具,在对文本文件的处理以及生成报表,awk是无可替代的。awk认为文本文件都是结构化的,它将每一个输入行定义为一个记录,行中的每个字符串定义为一个域(段),域和域之间使用分割符分割。 2.功能:流控制、数学运算、进程控制、内置的变量和函数、循环和判断 3.工作原理: awk 会把每行进行一个拆分,用相应的命令对拆分出来的“段”进行处理。 (1)行工作模式,读入文件的每一行,会把一行的内容,存到$0里 (2)使用内置的变量FS(段的分隔符,默认用的是空白字符),分割这一行,把分割出来的每个段存到相应的变量$(1-100) (3)输出的时候按照内置变量OFS(out FS),输出 (4)读入下一行继续操作 简单实例 [root@tx3 ~]# echo "this is a book" > awk.txt [root@tx3 ~]# awk '{print $2,$1,$3,$4}' awk.txt is this a book 4. Awk常用内置变量表: 1 $0 当前记录(作为单个变量) 2 $1~$n 当前记录的第n个字段,字段间由FS分隔 3 FS 输入字段分隔符 默认是空格 4 NF 当前记录中的字段个数,就是有多少列 5 NR 已经读出的记录数,就是行号,从1开始 6 RS 输入的记录他隔符默 认为换行符 7 OFS

Shell 脚本面试问题大全

两盒软妹~` 提交于 2020-03-16 11:59:36
1) 如何向脚本传递参数 ? ./script argument 例子 : 显示文件名称脚本 ./show.sh file1.txt cat show.sh #!/bin/bash cat $1 2) 如何在脚本中使用参数 ? 第一个参数 : 1 , 第 二 个 参 数 : 1,第二个参数:2 例子 : 脚本会复制文件(arg1) 到目标地址(arg2) ./copy.sh file1.txt /tmp/ cat copy.sh #!/bin/bash cp $1 $2 3) 如何计算传递进来的参数 ? $# 4) 如何在脚本中获取脚本名称 ? $0 5) 如何检查之前的命令是否运行成功 ? $? 6) 如何获取文件的最后一行 ? tail -1 7) 如何获取文件的第一行 ? head -1 8) 如何获取一个文件每一行的第三个元素 ? awk '{print $3}' 9) 假如文件中每行第一个元素是 FIND,如何获取第二个元素 awk '{ if ($1 == "FIND") print $2}' 10) 如何调试 bash 脚本 将 -xv 参数加到 #!/bin/bash 后 例子: #!/bin/bash –xv 11) 举例如何写一个函数 ? function example { echo "Hello world!" } 12) 如何向连接两个字符串 ? V1=

一个不错的shell 脚本教程

China☆狼群 提交于 2020-03-15 09:29:11
一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂! 建立一个脚本   Linux中有好多中不 同的shell,但是通常我们使用bash (bourne again shell) 进行shell编程,因为bash是免费的并且很容易使用。所以在本文中笔者所提供的脚本都是使用bash(但是在大多数情况下,这些脚本同样可以在 bash的大姐,bourne shell中运行)。   如同其他语言一样,通过我们使用任意一种文字编辑器,比如nedit、kedit、emacs、vi   等来编写我们的shell程序。   程序必须以下面的行开始(必须方在文件的第一行): #!/bin/sh   符号#!用来告诉系统它后面的参数是用来执行该文件的程序。在这个例子中我们使用/bin/sh来执行程序。   当编辑好脚本时,如果要执行该脚本,还必须使其可执行。   要使脚本可执行: chmod +x filename   然后,您可以通过输入: ./filename 来执行您的脚本。 注释   在进行shell编程时,以#开头的句子表示注释,直到这一行的结束。我们真诚地建议您在程序中使用注释。如果您使用了注释,那么即使相当长的时间内没有使用该脚本,您也能在很短的时间内明白该脚本的作用及工作原理。 变量   在其他编程语言中您必须使用变量。在shell编程中,所有的变量都由字符串组成