shell for循环

命令行的艺术

人走茶凉 提交于 2019-11-28 21:56:45
WX众号:基因学苑 Q群:32798724 更多精彩内容等你发掘! 以下内容是我在Github上看到的,是一份很好的学习命令行的材料。不知多少次苦口婆心,耳提面命告诉别人要想学好生物信息一定要学会命令行操作。但是呢,书到用时方恨少的,很多东西只有自己强烈需要的时候才会去学的。点击“阅读原文”直达官网。 命令行的艺术 前言 基础 日常使用 文件及数据处理 系统调试 单行脚本 冷门但有用 仅限 OS X 系统 仅限 Windows 系统 更多资源 免责声明 熟练使用命令行是一种常常被忽视,或被认为难以掌握的技能,但实际上,它会提高你作为工程师的灵活性以及生产力。本文是一份我在 Linux 上工作时,发现的一些命令行使用技巧的摘要。有些技巧非常基础,而另一些则相当复杂,甚至晦涩难懂。这篇文章并不长,但当你能够熟练掌握这里列出的所有技巧时,你就学会了很多关于命令行的东西了。 这篇文章是许多作者和译者共同的成果。这里的部分内容首次出现于 Quora, 但已经迁移到了 Github,并由众多高手做出了许多改进。如果你在本文中发现了错误或者存在可以改善的地方,请贡献你的一份力量。 前言 涵盖范围: 这篇文章不仅能帮助刚接触命令行的新手,而且对具有经验的人也大有裨益。本文致力于做到覆盖面广(涉及所有重要的内容),具体(给出具体的最常用的例子),以及简洁(避免冗余的内容

shell案例-14

泄露秘密 提交于 2019-11-28 18:05:55
写一个脚本实现如下功能: 输入一个数字,然后运行对应的一个命令。 显示命令如下: *cmd meau** 1 - date 2 - ls 3 - who 4 - pwd 当输入1时,会运行date, 输入2时运行ls, 以此类推。 核心要点 case判断 题目要求 阿铭老师的参考答案 参考答案 #!/bin/bash echo "*cmd meau** 1 - date 2 - ls 3 - who 4 - pwd" read -p "Please input a number: " n if [ -z "$n" ] then echo "请输入一个纯数字,范围1-4." exit fi n1=`echo $n|sed 's/[0-9]//g'` if [ -n "$n1" ] then echo "请输入一个纯数字,范围1-4." exit fi case $n in 1) date ;; 2) ls ;; 3) who ;; 4) pwd ;; *) echo "请输入1-4的数字" ;; esac 题目要求 用shell脚本实现如下需求: 添加user_00 – user_09 10个用户,并且给他们设置一个随机密码,密码要求10位包含大小写字母以及数字,注意需要把每个用户的密码记录到一个日志文件里。 提示: 随机密码使用命令 mkpasswd 在脚本中给用户设置密码

shell脚本进阶一(for,while,continue,break,select等等)

感情迁移 提交于 2019-11-28 17:53:52
脚本进阶一 一、for循环的第二种写法: 众所周知,for有两种写法 第一种:for i in k8s-node{1..3};do setenforce 0;done 第二种写法:C语言风格 直接写怎么用: #for后必须写两个括号,又称双小括号写法 [root@linux1 ~]# cat for_2.sh #!/bin/bash for ((i=1,sum=0;i<=100;i++));do let sum+=i done echo "sum=${sum}" [root@linux1 ~]# bash for_2.sh sum=5050 二、while循环 我喜欢这样写,一直循环然后用break退出 [root@linux1 ~]# cat while_sum.sh #!/bin/bash i=1 sum=0 while true;do let sum+=i let i++ if [ $i -gt 100 ];then break fi done echo "sum=${sum}" [root@linux1 ~]# bash while_sum.sh sum=5050 while的高级用法:读取标准输入的内容实现循环 [root@linux1 ~]# cat while_2.sh #!/bin/bash while read line do echo $line done <

shell脚本编程高级篇

喜夏-厌秋 提交于 2019-11-28 13:05:11
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脚本编写守则

你。 提交于 2019-11-28 12:25:03
现在centos7中使用的是bash软件,通过以下命令可以查看bash版本: [root@localhost ~]# cat /etc/redhat-release #查看系统的版本 CentOS Linux release 7.5.1804 (Core) #我这里使用的是centos 7.5 1804 [root@localhost ~]# bash --version #查看bash的版本 GNU bash, 版本 4.2.46(2)-release (x86_64-redhat-linux-gnu) #这一行就是bash版本 Copyright (C) 2011 Free Software Foundation, Inc. 许可证 GPLv3+: GNU GPL 许可证版本3或者更高 <http://gnu.org/licenses/gpl.html> 这是自由软件,您可以自由地更改和重新发布。 在法律允许的范围内没有担保. 若生产环境下的服务器使用的是较老版本的系统及shell,那么建议将其升级到最新版的shell,因为近两年老版本被暴露出存在较严重的安全漏洞。 bash软件曾经爆出了严重漏洞(破壳漏洞),凭借此漏洞,别人可能会接管计算机的整个操作系统,得以访问各种系统内的机密信息,并对系统进行更改等。任何人的计算机系统,如果使用了bash软件,都需要立即打上补丁

shell - for 循环

坚强是说给别人听的谎言 提交于 2019-11-28 10:53:32
for 循环语句 for var in [ 取值列表 ] do echo $var done 例: for i in 1 2 3 4 5 for j in {1..100} # ls -l /etc/|wc -l # 转义字符 for var in file1 file\'2 I\'s # 三次,斜杠用来转义 # 从变量中取值 list="file1 file2 file3" for i in $list # 从命令中取值 for i in 'cat /etc/hosts' do # for 循环可以自定义shell分隔符,默认以空格作为分隔。IFS来自定义 1. 冒号 IFS=: 2. 冒号,封号,双引号 IFS=:;" 3. 换行符 IFS=$'\n' #!/usr/bin/bash IFS=$'\n' for i in `cat /etc/hosts` do # echo $i echo $i|grep "root" # 输出包含root的 done # 变量的自增和自减 C写法 for ((i=0;i<10;i++)) do commands done for (( a=1,b=9;a<10;a++,b--)) do echo num is $a $b done # 批量创建用户 #!/user/bin/bash for i in $( cat user.txt ) do

Shell编程(3)

戏子无情 提交于 2019-11-28 10:15:11
1. shell流程控制 2. for语句 3. while语句 4. break和continue语句 5. case语句 6. shell编程高级实战 shell流程控制 流程控制是改变程序运行顺序的指令。linux shell有一套自己的流程控制语句,其中包括条件语句(if),循环语句(for,while),选择语句(case)。下面我将通过例子介绍下,各个语句使用方法 if语句 格式: 格式:if list; then list; [ elif list; then list; ] ... [ else list; ] fi 1.1 单分支 if 条件表达式; then 命令 fi 实例: #!/bin/bash N=10 if [ $N -gt 5 ]; then   echo yes fi # bash test.sh yes 1.2 双分支 if 条件表达式; then   命令 else   命令 fi 实例1: #!/bin/bash N=10 if [ $N -lt 5 ]; then   echo yes else   echo no fi # bash test.sh no 实例2:判断crond进程是否正在运行 -v: 表示取反 -c: 即count,取代通常的输出,显示行数 #!/bin/bash NAME=crond NUM=$(ps aux |

shell常用命令

一个人想着一个人 提交于 2019-11-28 08:39:46
文章目录 1.入门 2.变量定义与引用 3.传递参数 4.数组 5.流程控制if 5.1 if else 语法 5.2 if else-if else 语法 6.流程控制for while 6.1 for循环 6.2 while循环 7.分割 8.awk 9.sed 1.入门 shell脚本一般都是以.sh结尾,第一行标准的写法是:#!/bin/bash 例如有个hello.sh文件,内容如下: #!/bin/bash echo "Hello,World" 然后给脚本添加执行权限: chmod u+x hello.sh 执行脚本,结果如下: [ root@JD ~ ] # ./test.sh Hello,World 也可以通过下面这个方式去执行: [ root@JD ~ ] # sh test.sh Hello,World debug模式: [ root@JD ~ ] # sh -x test.sh + echo Hello,World Hello,World 2.变量定义与引用 变量名的命名须遵循如下规则: 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。 中间不能有空格,可以使用下划线(_)。 不能使用标点符号。 不能使用bash里的关键字(可用help命令查看保留关键字) 变量的定义方式: key = value 创建一个variable.sh文件,内容如下: #

shell使用for循环 1~100求和

谁说胖子不能爱 提交于 2019-11-28 08:34:35
for循环列表表示方式 * 生成列表 {起始数..结束数} 如:for i in {1..5};do * 命令生成列表 `seq [起始数] [步进长度] 结束数 如:for i in `seq 1 5`;do 或者for i in $(seq 1 5);do 1.新建shell脚本文件 #vi sum1to100.sh #!/bin/bash sum=0 for i in $(seq 1 100);do sum=$(($sum+$i)) #sum=$[$sum+$i] 第二种表示求和:$[] done echo $sum 2.修改shell脚本文件具有执行权限 chmod +x sum1to100.sh 2.执行shell脚本 ./sum1to100.sh 来源: https://blog.51cto.com/1929297/2432115

shell编程-大杂烩

谁说胖子不能爱 提交于 2019-11-28 08:22:20
shell学习 不退出vim执行 ::!bash change_ip.sh 10.190.172.6 10.190.172.7 VIM 中执行 Shell 命令,有以下几种形式: 1. :!command 不退出 vim ,并执行 shell 命令 command ,将命令输出显示在 vim 的命令区域,不会改变当前编辑的文件的内容 例如: :!ls -l , 如果你正在编辑一个脚本 ,vim ErrorMail.sh, 代码基本写完,你想测试一下你不用保存退出,你可以先保存 :w! 然后再执行这个脚本 :!sh ErrorMai.sh. 此时你并没有退出 vim 编辑器,返回结果后,你只要回车一下可以继续编辑 2. :r!command 将 shell 命令 command 的结果插入到当前行的下一行 . 例如: :r!date ,读取系统时间并插入到当前行的下一行。 3. :起始行号,结束行号 !command 将起始行号和结束行号指定的范围中的内容输入到 shell 命令 command 处理,并将处理结果替换起始行号和结束行号指定的范围中的内容 . 例如 :62,72 !sort ,将 62 行到 72 行的内容进行排序 , 可以只指定起始行,例如 :62 !tr [a-z] [A-Z] ,将 62 行的小写字母转为大写字母 linux shell 脚本输入参数解析 #!