shell for循环

shell编程基本语法和变量

孤街醉人 提交于 2019-12-04 07:05:12
一.编写shell脚本基本格式 拿最简单的 hello word 举例 .#!/bin/bash echo 'hello world' .#!/bin/bash:告诉计算机,使用bash解释器来执行代码 echo: 打印 二.运行shell脚本 方法一 (推荐使用) chmod 777 myshell.sh #给文件权限 ./myshell.sh #运行文件 方法2 sh myshell.sh 三.注释 单行注释 #内容 多行注释 :<<! 内容 ! 四.定义变量 基本语法 1.定义变量:变量名=变量值 2.撤销变量:unset 变量名 3.声明静态变量:readonly 变量名 #静态变量不能unset 将命令执行结果返回变量 1.A=`ls -la` 反引号 2.A=$(ls -la) 等价于反引号 系统变量: $PATH $HOME $PWD $SHELL $USER 五.设置环境变量 基本语法 export 变量名=变量值 将shell变量输出给环境变量 source 配置文件名称 让修改后的配置信息立即生效 echo $变量值 查看环境变量的值 举例 vim a.sh export a = 111 :wq source a.sh echo $a 111 六.位置参数变量 主要是给shell脚本传参数 $n (功能描述:n 为数字,$0 代表命令本身,$1-$9

shell编程

社会主义新天地 提交于 2019-12-04 06:30:40
linux系统下给命令指定别名alias命令用法: 在linux系统中如果命令太长又不符合用户的习惯,那么我们可以为它指定一个别名。虽然可以为命令建立“链接”解决长文件名的问题,但对于带命令行参数的命令,链接就无能为力了。而指定别名则可以解决此类所有问题。只要举一些例子就可以了: alias l='ls -l' ;用 l 代替 ls -l 命令(Xenix 下就有类似的 l 命令) alias cd..='cd ..' ;用 cd.. 代替 cd .. 命令(对在 DOS 下使用惯了 cd.. 的人帮助很大) alias md='mkdir' ;用 md 代替 mkdir 命令(对在 DOS 下…) alias c:='mount /dev/hda1 /mnt/c & cd /mnt/c' ;用 c: 命令代替命令序列:安装 DOS 分区,再进入。 通常我们可以将以上命令放到自己的home目录下的.bash_prifle文件中,在使用source .bash_profile 命令.即可使用. Shell编程基础 我们可以使用任意一种文字编辑器,比如gedit、kedit、emacs、vi等来编写shell脚本,它必须以如下行开始(必须放在文件的第一行): # !/bin/sh 注意:最好使用“!/bin/bash”而不是“!/bin/sh”,如果使用tc shell改为tcsh

Shell脚本编程

拈花ヽ惹草 提交于 2019-12-04 00:55:34
1、Shell脚本是什么? Shell脚本语言为过程式语言,解释运行,依赖于外部程序文件来运行。Shell脚本是命令的堆积,但很多命令不具有幂等性,需要用程序逻辑来判断运行条件是否满足,以避免其运行中发生错误。但并不是所有命令执行失败,都会导致脚本运行终止, 命令执行失败 ,如果产生严重错误,该严重错误指,脚本会exit,任何时候shell脚本或shell解释器遇到exit命令就会终止,或我们使用某种判断机制将其强行终止,或者脚本运行过程中出现语法错误,也可能终止。 编译过程:高级语言–>编译器–>目标代码,如C、C++、Java。 解释过程:高级语言–>解释器–>机器代码,如shell、perl、python。 2、如何编写shell脚本? 脚本文件的第一行顶格,给出shebang,即解释器路径,用于指明解释执行当前脚本的解释器程序文件。常见的解释器如下: #!/bin/bash #!/usr/bin/python #!/usr/bin/perl 3、运行脚本 (1)赋予执行权限,并直接运行此程序文件。 chmod +x /PATH/TO/SCRIPT_FILE /PATH/TO/SCRIPT_FILE (2)直接运行解释器,将脚本以命令行参数传递给解释器程序,脚本不需要执行权限。 bash /PATH/TO/SCRIPT_FILE 4、算术运算 (1)算术运算符:+,-,*,/

Shell 学习(三)--流程控制

时光怂恿深爱的人放手 提交于 2019-12-03 20:23:59
目录 Shell 学习(三)--流程控制 1 if判断 2 case 语句 3 for循环 4 while 循环 Shell 学习(三)--流程控制 1 if判断 基本语法 if [ 条件判断式 ];then 程序 fi 或者 if[ 条件判断式 ] then 程序 elif[ 条件判断式 ] then 程序 fi 注意事项 :(1) [ 条件判断式 ],中括号和条件判断式之间必须要有空格。(2) 推荐使用第二种方式 ​ 应用实例 案例: 编写一个shell程序,请输入参数,大于等于60,则输出“及格了”,如果小于60,则输出“不及格” #!/bin/bash if [ $1 -ge 60 ] then echo "及格了" elif[ $1 -lt 60] then echo "不及格" fi 2 case 语句 基本语法 这个case语法很不一样,我开始很不习惯,有点像C的感觉 case $变量名 in "值1") 如果变量的值等于值1,则执行程序1 ;; "值2") 如果变量的值等于值2,则执行程序2 ;; ···省略其他分支··· *) 如果变量的值都不是以上的值,则执行此程序 ;; esac 应用实例 案例:当命令行参数是1时,输出“周一”,当参数是2时,输出“周二”,其他情况输出other。 #!/bin/bash case $1 in "1") echo "周一" ;

shell函数

易管家 提交于 2019-12-03 09:52:46
shell函数 为什么要使用shell函数 linux别的的作用 [root@lamp ~]# alias alias cp='cp -i' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i' alias vi='vim' alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde' 设置别名与使用 [root@lamp ~]# alias cdone='cd /' [root@lamp ~]# alias alias cdone='cd /' alias cp='cp -i' alias l.='ls -d .* --color=auto' alias ll='ls -l --color=auto' alias ls='ls --color=auto' alias mv='mv -i' alias rm='rm -i' alias vi='vim' alias which='alias | /usr/bin/which --tty-only --read-alias --show

Shell脚本笔记(八)循环

匿名 (未验证) 提交于 2019-12-03 00:39:02
循环 一、whlie和until循环 while循环基本语法: while <条件表达式> do 指令 done #注意代码缩进 util循环基本语法: until <表达式> do 指令 done #与while的区别:不成立时进入循环,成立时终止循环 注意while条件表达式跟if的区别:if后的表达式是形如‘[ a -eq b ]‘这样的表达式,此时返回0为真,while后跟(( a < b)),返回1时为真。 # !/bin/ bash sum = 1000 i = 15 while (( sum > i)) #正确 do (( sum = sum - i)) echo " The sum now is $sum " done echo " The money is less than $i pls add it " # !/bin/ bash sum = 1000 i = 15 while [ $ sum - gt $i ] #错误的写法 do (( sum = sum - i)) echo " The sum now is $sum " done echo " The money is less than $i pls add it " 使用while按行读文件: 方法一: exec < FILE sum = 0 while read line do echo

shell 流程控制

匿名 (未验证) 提交于 2019-12-03 00:32:02
和Java、PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法): <? php if ( isset ( $_GET [ "q" ])) { search ( q ); } else { // 不做任何事情 } 在sh/bash里可不能这么写,如果else分支没有语句执行,就不要写这个else。 if else if if 语句语法格式: if condition then command1 command2 ... commandN fi 写成一行(适用于终端命令提示符): if [ $ ( ps - ef | grep - c "ssh" ) - gt 1 ]; then echo "true" ; fi 末尾的fi就是if倒过来拼写,后面还会遇到类似的。 if else if else 语法格式: if condition then command1 command2 ... commandN else command fi if else-if else if else-if else 语法格式: if condition1 then command1 elif condition2 then command2 else commandN fi 以下实例判断两个变量是否相等: a = 10 b = 20 if [ $a == $b ] then

shell面试题

匿名 (未验证) 提交于 2019-12-03 00:26:01
<configuration> </artifactItem> <artifactItem> </artifactItem> <!-- </artifactItem> <groupId>some groupId</groupId> < </configuration> #!/bin/bash grep -n 'artifactItem>' 2.txt |awk '{print $1}' |sed 's/://' > /tmp/line_number.txt n=`wc -l /tmp/line_number.txt|awk '{print $1}'` get_value(){ x=`sed -n "$i"p /tmp/value.txt|awk '{print $1}'` } n2=$[$n/2] for j in `seq 1 $n2` do done 10.111.11.1,root,xyxyxy 10.111.11.1,root,xzxzxz 10.111.11.1,root,123456 10.111.11.1,root,xxxxxx #!/usr/bin/expect set passwd [lindex $argv 0] set host [lindex $argv 1] spawn ssh root@$host expect { "yes/no" { send

Shell 流程控制

匿名 (未验证) 提交于 2019-12-03 00:19:01
Shell 流程控制 和Java、PHP等语言不一样,sh的流程控制不可为空,如(以下为PHP流程控制写法): <? php if ( isset ( $_GET [ "q" ])) { search ( q ); } else { // 不做任何事情 } 在sh/bash里可不能这么写,如果else分支没有语句执行,就不要写这个else。 if else if if 语句语法格式: if condition then command1 command2 ... commandN fi 写成一行(适用于终端命令提示符): if [ $ ( ps - ef | grep - c "ssh" ) - gt 1 ]; then echo "true" ; fi 末尾的fi就是if倒过来拼写,后面还会遇到类似的。 if else if else 语法格式: if condition then command1 command2 ... commandN else command fi if else-if else if else-if else 语法格式: if condition1 then command1 elif condition2 then command2 else commandN fi 以下实例判断两个变量是否相等: a = 10 b = 20 if [ $a ==

Shell中for循环的几个常用写法

匿名 (未验证) 提交于 2019-12-03 00:18:01
转自;https://blog.csdn.net/babyfish13/article/details/52981110 第一类:数字性循环 ----------------------------- for1-1.sh [html] view plain copy #!/bin/bash for(( i = 1 ;i < =10;i++)); do echo $(expr $i \* 3 + 1); done ----------------------------- for1-2.sh [html] view plain copy #!/bin/bash for i in $(seq 1 10) do echo $(expr $i \* 3 + 1); done ----------------------------- for1-3.sh [html] view plain copy #!/bin/bash for i in {1..10} do echo $(expr $i \* 3 + 1); done ----------------------------- for1-4.sh [html] view plain copy #!/bin/bash awk 'BEGIN{for( i = 1 ; i < =10; i++) print i}' 第二类:字符性循环 ---