shell for循环

shell面试题总结

痞子三分冷 提交于 2019-12-24 04:33:03
1) 如何向脚本传递参数 ? ./script argument 例子: 显示文件名称脚本 ./show.sh file1.txt cat show.sh #!/bin/bash echo $1 (LCTT 译注:谢谢某匿名访客的提醒,原题有误,修改之。) 2) 如何在脚本中使用参数 ? 第一个参数 : $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)

shell编程入门(2)

你离开我真会死。 提交于 2019-12-24 00:31:12
shell的结构分为三大类:顺序结构、分支结构和循环结构 1. if语句 语法格式: if <语句序列A> then <语句序列B> fi 如果语句序列A中的最后一个命令的返回值为0,则执行语句序列B中的命令,然后继续执行fi以后的命令;如果语句序列A中的最后一个命令的返回值为非0,则跳转到fi并且继续执行fi以后的命令, 注意,在这里A执行结果为0认为是真 。 if test –f funfilethen echo funfile exists fi if [ -f funfile ]; then echo funfile exists echo hello fi 2. if-else语句 语法格式: if 语句序列A then 语句序列B else 语句序列C fi 如果语句序列A中的最后一个命令的返回值为0,则执行语句序列B中的命令,然后继续执行fi以后的命令;如果语句序列A中的最后一个命令的返回值为非0,则执行语句序列C中的命令,然后继续执行fi以后的命令。 任何命令的返回值都可以作为判断条件,也可以嵌套if语句,但必须保证if 和 fi配对。 if [ “$X” –lt 10 ]; then echo X is less than 10 else if [ “$X” –gt 10 ]; then echo X is greater than 10 else echo X

linux shell set命令

老子叫甜甜 提交于 2019-12-23 18:17:00
Linux set命令用于设置shell。 set指令能设置所使用shell的执行方式,可依照不同的需求来做设置。 语法 set [+-abCdefhHklmnpPtuvx] 参数说明 : -a  标示已修改的变量,以供输出至环境变量。 -b  使被中止的后台程序立刻回报执行状态。 -C  转向所产生的文件无法覆盖已存在的文件。 -d  Shell预设会用杂凑表记忆使用过的指令,以加速指令的执行。使用-d参数可取消。 -e  若指令传回值不等于0,则立即退出shell。 -f   取消使用通配符。 -h  自动记录函数的所在位置。 -H Shell  可利用"!"加<指令编号>的方式来执行history中记录的指令。 -k  指令所给的参数都会被视为此指令的环境变量。 -l  记录for循环的变量名称。 -m  使用监视模式。 -n  只读取指令,而不实际执行。 -p  启动优先顺序模式。 -P  启动-P参数后,执行指令时,会以实际的文件或目录来取代符号连接。 -t  执行完随后的指令,即退出shell。 -u  当执行时使用到未定义过的变量,则显示错误信息。 -v  显示shell所读取的输入值。 -x  执行指令后,会先显示该指令及所下的参数。 +<参数>  取消某个set曾启动的参数。 来源: https://www.cnblogs.com/wangym/p

shell循环语句练习(读书笔记)

拥有回忆 提交于 2019-12-23 16:59:04
shell循环结构有三种 while语句 until语句 for语句 while 语法 while 条件 ( test或 [ ] 其他 Linux命令都是有返回值的,命令执行成功就返回0;失败就返回一个非零值,一般情况下是1 ) do 要循环执行的语句 done #do 和done 之间的即为循环体 while 示例 #! /bin/bash echo "PID: $$" echo "PPID: $PPID " echo "UID: $UID " sum = 0 num = 1 while test $num -le 100 do sum = $ [ $sum + $num ] let num = $num +1 done echo "1到100的和为: $sum " until语法 #until 直到条件为假的时候执行 until 条件为假执行 do 要循环执行的语句 done until示例 #! /bin/bash echo "PID: $$" echo "PPID: $PPID " echo "UID: $UID " sum = 0 num = 1 until ! test $num -le 100 do sum = $ [ $sum + $num ] let num = $num +1 done echo "1到100的和为: $sum " 注意:也就是说 while

Linux Bash Shell快速入门 (三)

混江龙づ霸主 提交于 2019-12-20 10:20:43
for for 循环结构与 C 语言中有所不同,在 BASH 中 for 循环的基本结构是: for $var in do statments done 其中 $var 是循环控制变量, 是 $var 需要遍历的一个集合,do/done 对包含了循环体,相当于 C 语言中的一对大括号。 另外如果do 和 for 被写在同一行,必须在 do 前面加上 ";"。 如: for $var in ; do 。 下面是一个运用 for 进行循环的例子: #!/bin/bash for day in Sun Mon Tue Wed Thu Fri Sat do echo $day done # 如果列表被包含在一对双引号中,则被认为是一个元素 for day in "Sun Mon Tue Wed Thu Fri Sat" do echo $day done exit 0 注意上面的例子中,在 for 所在那行的变量 day 是没有加 "$" 符号的, 而在循环体内,echo 所在行变量 $day 是必须加上 "$" 符号的。 另外如果写成 for day 而没有后面的 in 部分, 则 day 将取遍命令行的所有参数。如这个程序: #!/bin/bash for param do echo $param done exit 0 上面这个程序将列出所有命令行参数。for

shell编程

旧街凉风 提交于 2019-12-20 10:10:59
Shell 1. 新建一个脚本 新建一个 xxx.sh 文件 #!/bin/bash 脚本标识 1. 变量 1.1定义变量 myName=”小白” 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则: 首个字符必须为字母( a-z,A-Z)。 中间不能有空格,可以使用下划线( _)。 不能使用标点符号。 使用变量: $ 变量名 为了区分,我们可以使用 ${ 变量名 } readonly 定义一个只读的变量,不能重新赋值 1.2 删除变量 使用 unset 命令可以删除变量。语法: unset variable_name 变量被删除后不能再次使用。 unset 命令不能删除只读变量。 实例 #!/bin/bash myUrl="http://www.runoob.com" unset myUrl echo $myUrl 2. Shell 字符串 字符串是 shell编程中最常用最有用的数据类型(除了数字和字符串,也没啥其它类型好用了),字符串可以用单引号,也可以用双引号,也可以不用引号。单双引号的区别跟PHP类似。 单引号 str='this is a string' 单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。 双引号 your

Shell高级编程学习笔记(基础篇)

孤街浪徒 提交于 2019-12-20 08:26:03
目录 1.shell脚本的执行方法    2.shell的变量类型    3.shell特殊变量 4.变量子串的常用操作    5.批量修改文件名实践    6.变量替换 7.在shell中计算字符串长度的方法   8.变量的数值计算:(()) 的用法 9. 变量的数值计算:let的用法     10.变量的数值计算:expr的用法 11.变量的数值计算:bc的用法    12.条件测试的多种方法 13.字符串测试操作符           14.整数二元比较操作符 15.逻辑操作符               16.利用shell知识制作单级及多级菜单 17.case结构条件语句         18. 当型循环和直到型循 环 19.for循环         待续。。。 1.shell脚本的执行方法 返回目录 当shell脚本以非交互的方式运行时,它会先查找环境变量ENV,该变量指定了一个环境文件(通常是.bashrc),然后从该环境变量文件开始执行,当读取了ENV文件后,SHELL才开始执行shell脚本中的内容。 shell脚本的执行通常可以采用以下三种方法: bash script-name 或者 sh script-name path/script-name 或者 ./script-name(当前路径下执行) source script-name 或 . script

shell 编程入门

亡梦爱人 提交于 2019-12-19 05:39:04
shell 介绍 在计算机科学中,shell 是一个命令解释器, shell 脚本是 shell 编程的一种实现 shell 是位于操作系统和应用程序之间,是他们二者最主要的接口,shell 负责把应用程序的命令解释给操作系统,将操作系统处理后的结果解释给应用程序,所以,shell 相当于是应用程序与操作系统之间的媒介(翻译官的角色) linux 内一般是 bash,mac 是 zsh,然后还有 windows 的cmd,不过最近 windows 发布了完整内核的 linux 子系统 WSL 2 查看当前系统的 shell 类型:echo $SHELL shell 脚本 定义:可执行的 linux 命令不在命令行下执行,而是通过一个文件执行时,称这个文件是 shell 脚本 一般用 vim 直接打开文件即可创建一个脚本,例如 vim start_service.sh 表示创建一个开启服务的脚本,脚本的内容自然是各种可执行的命令 #!/bin/bash echo 'start service~' 注释:单行使用 #,多行注释有两种方法,分别是 :<<! ... ! 和 :<<字符 ... 字符 #!/bin/bash echo '1' :<<! echo '3' echo '4' ! echo '5' 脚本执行方式:   bash /path/test.sh     使用 bash

shell脚本编程-循环(for、while、until)

試著忘記壹切 提交于 2019-12-17 19:59:59
for命令格式: – list参数:迭代中要用的一系列值 – 每个迭代中,变量var会包含列表中的当前值 – do和done语句之间输入的命令可以是一条或多条标准的bash shell命令 1 2 3 4 for var in list do commands done 读取列表中的值 for命令最基本的用法就是遍历for命令自身中定义的一系列值: 在最后一次迭代后,$test变量的值会在shell脚本的剩余部分一直保持有效,除非修改它 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 $cat test #!/bin/bash for test in Alabama Alaska Arizona Arkansas California Colorado do echo The next state is $test done echo "The last state we visited was $test" test = Connecticut echo "Wait , now we're visiting was $test" $ . / test The next state is Alabama The next state is Alaska . . . The last state we visited was Colorado wait ,

Shell学习笔记

江枫思渺然 提交于 2019-12-17 09:29:04
█开始行 shell程序必须以下面的行开始(必须方在文件的第一行) #!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序 █可执行 当编辑好脚本时,如果要执行该脚本,还必须使其可执行。 要使脚本可执行:chmod +x filename █管道 (|): 将一个命令的输出作为另外一个命令的输入。 █重定向: 将命令的结果输出到文件,而不是标准输出(屏幕)。 > 写入文件并覆盖旧文件 >> 加到文件的尾部,保留旧文件内容 █双引号与单引号 双引号的特殊字符可以保有变量的特性,但是单引号内的特殊字符则仅为一般字符。 #name="$LOGNAME is hh" //root is hh #name='$LOGNAME is hh' //$LOGNAME is hh 通常大写字符为系统预设变量,自行设定的变量可以使用小写字符 █取消变量: 用unset 变量名 █Shell特殊变量 $0 :执行的脚本的文件名 $1 :脚本文件的第一个参数名 $# :传递到脚本的参数个数 $* :以一个单字符串显示所有向脚本传递的参数 $$ :脚本运行的当前进程ID号 $? :显示最后命令的退出状态,0表示没有错误,其它值表示有错误 █常用shell内嵌命令: (1)echo:显示变量内容 (2)env:显示目前系统中主要的预设变量内容 (3)set:显示目前系统中全部的变量内容