【linux】shell脚本 循环 echo输入输出 函数 shell调试
创始人
2024-04-03 20:51:45

1.循环 for/do/done

        shell脚本的for循环结构和C语言不一样,它类似于某些编程语的foreach循环。

#!/bin/bash
for FRUIT in apple banana pear; doecho "I like $FRUIT"
done

 FRUIT(可自定义变量)是一个循环变量,第一次循环$FRUIT的取值是apple,第二次取值是banana,第三次取值是pear

while/do/done

        while的用法和C语言类似。比如一个验证密码的脚本:

#!/bin/bashecho "请输入密码:"
read PASSWORD
while [ "$PASSWORD" != "123456" ];doecho "sorry,try again"
read PASSWORD
done

 下面的例子是通过算数运算控制循环次数:

#!/bin/bashCOUNTER=1
while [ "$COUNTER" -lt 10 ];doCOUNTER=$(($COUNTER+1))echo "$COUNTER Here we go again"done

 break/continue

        break[n]可以指定跳出几层循环: continue 跳过本次循环,但不会跳出循环。 即break跳出,continue 跳过。 2.位置参数和特殊变量         有很多特殊变量是被shell自动赋值的,我们已经遇到了?和$1,其他常用的位置参数和特殊变量在这里总结一下:         

 例程:

#! /bin/bash
echo "The program $0 is now running"
echo "The first parameter is $1"
echo "The second parameter is $2"
echo "The parameter list is $@"
shift
echo "The first parameter is $1"
echo "The second parameter is $2"
echo "The parameter list is $@

 3.输入输出

        echo       显示文本行或变量,或者把字符串输入到文件

 管道     可以通过|把一个命令的输出传递给另一个命令做输入

                cat myfile | more                 ls -l | grep "myfile"
tee     把结果输出到标准输出,另一个副本输出到响应文件。 例程:把ls -l显示出来后,再输入一份ts.txt 文件重定向

 4.函数

        和C语言类似,shell中也有函数的概念,但是函数定义中没有返回值也没有参数列表。

例程:

#! /bin/bash
fun()
{ echo "Function foo is called"
}
echo "-=start=-"
fun
echo "-=end=-"

 

6.shell调试

        shell提供了一些用于调试脚本的选项,如:             

                -n 读一遍脚本中的命令但不执行,用于检查脚本中的语法错误                 -v 一边执行脚本,一边将执行过的脚本命令打印到标准输出                 -x 提供跟踪执行信息,将执行的每一条命令和结果依次打印出来。。                 这些选项有三种常见的使用方法:。                 1.在命令行提供参数。 如:
                        $ sh -x ./script.sh
                2.在脚本开头提供参数。如:
                        #! /bin/sh -x
                3.在脚本中用set命令启用或禁用参数。如:
#! /bin/bash
if [ -z "$1" ] ; then
set -x
echo "ERROR: Insufficient Args."
exit 1
set +x
fi

 set x和set +x分别表示启用和禁用x参数,这样可以只对脚本中的某一段进行跟踪调试。

相关内容

热门资讯

财联社1月8日早间新闻精选 转自:财联社【财联社1月8日早间新闻精选】 1、工业和信息化部等八部门印发《“人工智能+制造”专项行...
国家医保局:2028年前全面推... 转自:北京日报客户端今后看病缴费将不用再为排长队发愁了。1月8日,国家医保局发布通知,将在全国范围内...
新闻分析丨格陵兰岛为何让美国如... 来源:新华社新华社北京1月7日电 新闻分析|格陵兰岛为何让美国如此垂涎新华社记者林昊美军强行控制委内...
数字人主播纳入监管 “会员降权...   市场监管总局和国家网信办近日联合发布《网络交易平台规则监督管理办法》《直播电商监督管理办法》。这...
突破困境 “丫邦”组合更加坚定 北京时间1月7日,马来西亚羽毛球公开赛混双首轮,2号种子蒋振邦/魏雅欣2比0击败印度组合卡普尔/加德...