shell for循环

【shell】分割字符串循环输出,dash和bash的不同写法

[亡魂溺海] 提交于 2020-02-06 17:38:27
1. dash的写法: 使用awk string= "abc,def,h" for var in $ ( echo $ { string } | awk '{split($0,arr,",");for(i in arr) print arr[i]}' ) do echo $ { var } done 2. bash可以这样写: string= "abc,def,h" OLD_IFS=” $IFS ” IFS=” , ” arr= ( $ { string } ) IFS=” $OLD_IFS ” for var in $ { arr [ @ ] } do echo $ { var } done 或 string= "abc,def,h" arr= ( $ { string/ / , / } ) for var in $ { arr [ @ ] } do    echo $ { var } done 以上方法输出都为: abc def h 来源: CSDN 作者: 小时hour 链接: https://blog.csdn.net/c753575/article/details/104196869

Linux Bash语法总结

喜欢而已 提交于 2020-02-04 12:05:46
在学习Linux的过程中,无可避免的会碰到一个既让人喜欢、又令人十分头疼的神奇的东西——bash编程,也就是shell脚本。那么什么是shell脚本呢?shell是一个命令语言解释器,而shell脚本则是Linux命令的集合,按照预设的顺序依次解释执行,来完成特定的、较复杂的系统管理任务,类似于windows中的批处理文件。本篇博文主要介绍bash编程的基础语法讲解。 一、bash编程之变量 1)bash变量类别 本地变量:只对当前shelll进程有效的变量,对其他shell进程无效,包含当前shell进程的子进程。 2)变量赋值: 即向变量的存储空间保存数据,如下 [root@localhost ~]# VAR_NAME=VALUE 3)变量的引用 格式为:${VAR_NAME} " ":弱引用,里面的变量会被替换; ' ':强引用,里面的所有字符都是字面量,直接输出,所见即所得; 4)环境变量 对当前shell进程及其子shell有效,对其他的shell进程无效! 定义:VAR_NAME=VALUE 导出:export VAR_NAME 撤销变量:unset VAR_NAME 只读变量:readonly VAR_NAME 5)局部变量 在shell脚本中定义,只可以在shell脚本中使用! 6)位置变量 $1,$2...,${10} 7)特殊变量 shell对一些参数做特殊处理

shell中函数的定义 if语句 for循环 while循环

不羁岁月 提交于 2020-02-04 02:15:57
shell中函数的定义 if语句 for循环 while循环 文章目录 shell中函数的定义 if语句 for循环 while循环 1.函数的定义 2.if语句 3.for循环 4.while循环 1.函数的定义 举例: #!/bin/bash foo(){ #定义函数 echo $* } bar(){ #定义函数 echo $@ } foo 1 2 3 4 #调用函数 bar 1 2 3 4 #调用函数 具体格式: 定义函数: 函数名(){ 函数要执行的内容 ..... } 调用函数: 函数名 要传递的参数 2.if语句 举例: #!/bin/bash if [ "$1" == 10 ] then exit 0 #参数正确 退出状态为0 else exit 1 #参数不正确 退出状态为1 fi 具体格式: if [ 条件 ] then 符合条件时要做的事 else 不符合条件时要做的事 fi 3.for循环 举例: #!/bin/bash test(){ echo "未加引号,二者相同" echo $* echo $@ echo "加入引号后对比" echo "-------" for N in "$*" do echo $N done echo "########" for N in "$@" do echo $N done } test 11 22 33 具体格式: for

shell脚本基础

帅比萌擦擦* 提交于 2020-01-31 09:04:55
shell简介:shell是一种脚本语言,可以使用逻辑判断、循环等语法,可以自定义函数,是系统命令的集合 文章目录 shell脚本结构和执行方法 date命令的用法 shell中变量的用法 shell逻辑判断语法 if判断文件或目录的属性 if判断的一些特殊用法 shell中case判断用法 for、while循环 break、continue、exit shell中的函数 shell中的数组 shell脚本结构和执行方法 1.shell脚本开头需要加#!/bin/bash 2.以#开头的行作为注释 3.脚本的名字以.sh结尾,用于区分这是一个shell脚本 4.执行方法有两种: 1)bash test.sh 2)./test.sh #第二种执行方式需要有执行权限(chmod +x test.sh) 5.查看脚本执行过程:bash -x test.sh 6.查看脚本是否语法错误:bash -n test.sh #bash可以使用sh命令代替(在/usr/bin目录下,sh是bash的软连接文件) date命令的用法 年月日: [root@linux ~]# date 2019年 11月 19日 星期二 16:20:04 CST [root@linux ~]# date +%Y-%m-%d 2019-11-19 [root@linux ~]# date +%Y 2019 [root

Linux Shell常用技巧(五)

不打扰是莪最后的温柔 提交于 2020-01-28 19:25:40
十一. awk编程: 1. 变量: 在awk中变量无须定义即可使用,变量在赋值时即已经完成了定义。变量的类型可以是数字、字符串。根据使用的不同,未初始化变量的值为0或空白字符串" ",这主要取决于变量应用的上下文。下面为变量的赋值负号列表: 符号 含义 等价形式 = a = 5 a = 5 += a = a + 5 a += 5 -= a = a - 5 a -= 5 *= a = a * 5 a *= 5 /= a = a / 5 a /= 5 %= a = a % 5 a %= 5 ^= a = a ^ 5 a ^= 5 /> awk '$1 ~ /Tom/ {Wage = $2 * $3; print Wage}' filename 该命令将从文件中读取,并查找第一个域字段匹配Tom的记录,再将其第二和第三个字段的乘积赋值给自定义的Wage变量,最后通过print命令将该变量打印输出。 /> awk ' {$5 = 1000 * $3 / $2; print}' filename 在上面的命令中,如果$5不存在,awk将计算表达式1000 * $3 / $2的值,并将其赋值给$5。如果第五个域存在,则用表达式覆盖$5原来的值。 我们同样也可以在命令行中定义自定义的变量,用法如下: /> awk -F: -f awkscript month=4 year=2011

Linux Shell常用技巧(五)

ⅰ亾dé卋堺 提交于 2020-01-28 04:53:15
十一. awk编程: 1. 变量: 在awk中变量无须定义即可使用,变量在赋值时即已经完成了定义。变量的类型可以是数字、字符串。根据使用的不同,未初始化变量的值为0或空白字符串" ",这主要取决于变量应用的上下文。下面为变量的赋值负号列表: 符号 含义 等价形式 = a = 5 a = 5 += a = a + 5 a += 5 -= a = a - 5 a -= 5 *= a = a * 5 a *= 5 /= a = a / 5 a /= 5 %= a = a % 5 a %= 5 ^= a = a ^ 5 a ^= 5 /> awk '$1 ~ /Tom/ {Wage = $2 * $3; print Wage}' filename 该命令将从文件中读取,并查找第一个域字段匹配Tom的记录,再将其第二和第三个字段的乘积赋值给自定义的Wage变量,最后通过print命令将该变量打印输出。 /> awk ' {$5 = 1000 * $3 / $2; print}' filename 在上面的命令中,如果$5不存在,awk将计算表达式1000 * $3 / $2的值,并将其赋值给$5。如果第五个域存在,则用表达式覆盖$5原来的值。 我们同样也可以在命令行中定义自定义的变量,用法如下: /> awk -F: -f awkscript month=4 year=2011

linux shell 报错 Syntax error: Bad for loop variable

戏子无情 提交于 2020-01-27 22:20:14
在linux下写了一个简单的shell,循环10次. test.sh #!/bin/bash ## ##循环10次 ## for ((i=0; i<10; i++)); do echo Good Morning ,this is $i shell program. done 执行:sh test.sh 报下面的错误. Syntax error: Bad for loop variable 在网上搜索了一下. 因为Ubuntu为了加快开机速度,用dash代替了传统的bash,所以我们这样执行就没问题. bash test.sh 那如果我们只想用sh test.sh 这样的方式执行,怎么办呢? 修改一下代码. for i in `seq 10` do echo Good Morning ,this is $i shell program. done 这个时候,你再执行 sh test.sh,就不会报错误啦. 来源: https://www.cnblogs.com/wangkongming/p/4876693.html

shell脚本day03-编程原理

隐身守侯 提交于 2020-01-23 21:35:09
一、编程介绍   (计算机只能识别二进制指令)   早期编程:驱动和硬件默认不能使用,但不同厂家设备之间需要进行指令沟通,我们需要驱动来进行翻译;更趋紧与硬件开发的工程师,要学习汇编语言,而汇编语言被厂家所限制。C,C++的底层就是汇编语言 现在编程基于高级语言,以及超高级语言,更好的让程序员能够实现汇报功能。高级语言、超高级语言需要翻译成计算机可读的语言(二进制指令) 汇编语言的分类 解释型---逐行解释,逐行执行 shell python java 编译型---一次编译,全部行 C C++ C# java 面向对象---侧重于数据的编程语言 面向过程---侧重于指令 编程语言的执行方式:       【按行执行】 顺序执行 循环执行---for(遍历) while(循环条件) until(和while相反) 选择执行---分支 if case 二、shell脚本语言介绍   shell语句是面向过程的,侧重于指令集。     优点:调用os(操作系统)的命令行,来实现所有功能;   缺点:没有库调用(区别于python)   shell语句的基本组成成分: 命令(重点!) 变量(全局变量、局部变量、本地变量) 逻辑关系 数据-变量(转参)   shell没有内嵌函数,没有函数库调用,没有调用库的接口 三、shell的第一句话(重要)    #!/bin/bash /

Linux shell编程学习笔记(一)

て烟熏妆下的殇ゞ 提交于 2020-01-21 04:57:27
Linux shell编程笔记 一:脚本开头固定格式: #!/bin/bash 申明这是一个shell脚本文件 二:脚本保存后缀为 .sh ;运行.sh的方式有两种: (1)./接文件名.sh的方式运行 (2)/bin/sh ./文件名.sh 区别:第一种直接以点斜杠运行的方式,有时候需要先赋予文件可执行权限,第二种方式则可以直接运行,不需要赋予执行权限 三:shell脚本 (1)变量定义:直接A=123或者FILE=“D:/xuexi/” 即可 (2)变量的引用:$A或者$FILE 注意$与变量名之间不能有空格;$不仅可以引用变量,也可以直接引用其他命令的执行结果,然后赋值给其他变量 如:USER=$(cat /root/users.txt) (3)系统常用的一些变量引用: $# 是传给脚本的参数个数 $0 是脚本本身的文件名 $1 是脚本后接的第一个参数 $2 是脚本后接的第二个参数 $@ 是传给脚本的所有参数列表,"$1" "$2" "$3" … "$n" $* 是以一个单字符串显示传给脚本的所有参数,"$1 $2 $3 … $n" $$ 是脚本运行的当前进程ID号 $? 是最后运行命令的结束状态码,0表示没有错误,其他表示有错误 (4)Linux中没有单引号 表示字符或者字符串需要用双引号引起来; 注意单引号与反引号的区别:反引号是键盘上Esc键下的那个键,与单引号是不同的

shell脚本结构化之循环命令

寵の児 提交于 2020-01-20 19:59:52
循环是编程的一个重要部分,bash shell提供了三种可用于脚本中的循坏命令 for 命令 while命令 until 命令 这些都没有好讲的,注意下格式就行了,看两个实例 查找可以执行的文件 #!/bin/bash IFS = : for folder in $PATH do echo " $folder :" for file in $folder /* do if [ -x $file ] then echo " $file " fi done done 创建多个用户账号 #!/bin/bash input = "users.csv" while IFS = ',' read -r userid name do echo "添加用户 $userid " useradd -c " $name " -m $userid done < " $input " 来源: CSDN 作者: weixin_46025444 链接: https://blog.csdn.net/weixin_46025444/article/details/104050657