收藏此站 联系我们 网站
当前位置:首页» 公司新闻 » 【建站服务】海南做网站/制作网站/搭建网站/设计网站/开发网站-网站服务一站式-域名申请

【建站服务】海南做网站/制作网站/搭建网站/设计网站/开发网站-网站服务一站式-域名申请

作者: 风兰 . 阅读量: 7 . 发表时间:2022-09-21 06:02:18

网站建设

上往建站提供服务器空间服务商百度快照排名网站托管百度推广运营,致力于设计外包服务与源代码定制开发360推广搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。


海南做网站/制作网站/搭建网站/设计网站/开发网站-网站服务一站式

网站建设.png

  1. shell 中的 for 循环不仅可以用文章所述的方法。

    对于习惯其他语言 for 循环的朋友来说可能有点别扭。

    for((assignment;condition:next));do
        command_1;
        command_2;
        commond_..;done;

    如上所示,这里的 for 循环与 C 中的相似,但并不完全相同。

    通常情况下 shell 变量调用需要加 $,但是 for 的 (()) 中不需要,下面来看一个例子:

    #!/bin/bashfor((i=1;i<=5;i++));do
        echo "这是第 $i 次调用";done;

    执行结果:

    这是第1次调用这是第2次调用这是第3次调用这是第4次调用这是第5次调用

    与 C 中相似,赋值和下一步执行可以放到代码之前循环语句之中执行,这里要注意一点:如果要在循环体中进行 for 中的 next 操作,记得变量要加 $,不然程序会变成死循环。

    情空明月

       情空明月

      moo***v@gmail.com

    5年前 (2018-02-27)
  2.    This_Is_Y

      Thi***s_Y@qq.com

       参考地址

    89

    从 ubuntu 6.10 开始,ubuntu 就将先前默认的 bash shell 更换成了dash shell,其表现为 /bin/sh 链接倒了 /bin/dash 而不是传统的 /bin/bash

    可以通过 ls -l /bin/*sh 命令看到:

    所以在使用 sh 命令执行脚本的时候实际使用的是 dash,而 dash 不支持这种 C 语言格式的 for 循环写法。

    解决方法:使用 bash 代替 sh 运行脚本:

    bash test.sh
    This_Is_Y

       This_Is_Y

      Thi***s_Y@qq.com

       参考地址

    2年前 (2021-01-18)
  3.    风鹏正举

      cle***@126.com

    5

    如果 for 循环是按 1 递增的,可以利用 seq 命令来生成数字系列,参考写法如下:

    #!/bin/bashmax=5for index in `seq $max`do
      echo $indexdone

    执行结果:

    12345

    在某些情况下比使用 while 更加方便。

    风鹏正举

       风鹏正举

      cle***@126.com

    10个月前 (11-04)
  4.    開色

      wrd***main@163.com

    9

    test 命令和 [ 底层是一个命令, [ 是一个命令,会自动检测右中括号 ],通过 which [ 查看 Linux 中命令的位置,test 不会自动检测右中括号 ] 。

    [ 底层使用 c/c++ 编写的可以看它的源码:https://github.com/freebsd/freebsd-src/blob/master/bin/test/test.c。

    [[ 是 bash shell 环境自己实现的判断方式,比 [ 更安全,例如:

    1. [ 不能识别 $var 变量值

    $ var=''$ [ $var = '' ] && echo True-bash: [: =: unary operator expected
    $ [ "$var" = '' ] && echo TrueTrue$ [[ $var = '' ]] && echo TrueTrue

    2. [ 会把大于号、小于号识别为重定向符号,把 a 当成文件输入输出

    $ var=$ [ "$var" < a ] && echo True-bash: a: No such file or directory
    $ [ "$var" < a ] && echo TrueTrue$ [[ $var < a ]] && echo TrueTrue

    [ 相比于 [[ 的一个优点,应该是 bash 


行后面的命令。


下面的脚本提示输入 1 到 4,与每一种模式进行匹配:


实例

echo '输入 1 到 4 之间的数字:'

echo '你输入的数字为:'

read aNum

case $aNum in

    1)  echo '你选择了 1'

    ;;

    2)  echo '你选择了 2'

    ;;

    3)  echo '你选择了 3'

    ;;

    4)  echo '你选择了 4'

    ;;

    *)  echo '你没有输入 1 到 4 之间的数字'

    ;;

esac

输入不同的内容,会有不同的结果,例如:


输入 1 到 4 之间的数字:

你输入的数字为:

3

你选择了 3

下面的脚本匹配字符串:


实例

#!/bin/sh


site="runoob"


case "$site" in

   "runoob") echo "菜鸟教程"

   ;;

   "google") echo "Google 搜索"

   ;;

   "taobao") echo "淘宝网"

   ;;

esac

输出结果为:


菜鸟教程

跳出循环

在循环过程中,有时候需要在未达到循环结束条件时强制跳出循环,Shell 使用两个命令来实现该功能:break 和 continue。


break 命令

break 命令允许跳出所有循环(终止执行后面的所有循环)。


下面的例子中,脚本进入死循环直至用户输入数字大于5。要跳出这个循环,返回到shell提示符下,需要使用break命令。


实例

#!/bin/bash

while :

do

    echo -n "输入 1 到 5 之间的数字:"

    read aNum

    case $aNum in

        1|2|3|4|5) echo "你输入的数字为 $aNum!"

        ;;

        *) echo "你输入的数字不是 1 到 5 之间的! 游戏结束"

            break

        ;;

    esac

done

执行以上代码,输出结果为:


输入 1 到 5 之间的数字:3

你输入的数字为 3!

输入 1 到 5 之间的数字:7

你输入的数字不是 1 到 5 之间的! 游戏结束

continue

continue 命令与 break 命令类似,只有一点差别,它不会跳出所有循环,仅仅跳出当前循环。


对上面的例子进行修改:


实例

#!/bin/bash

while :

do

    echo -n "输入 1 到 5 之间的数字: "

    read aNum

    case $aNum in

        1|2|3|4|5) echo "你输入的数字为 $aNum!"

        ;;

        *) echo "你输入的数字不是 1 到 5 之间的!"

            continue

            echo "游戏结束"

        ;;

    esac

done

运行代码发现,当输入大于5的数字时,该例中的循环不会结束,语句 echo "游戏结束" 永远不会被执行。


 Shell test 命令Shell 函数 

4 篇笔记 写笔记

   情空明月


  moo***v@gmail.com


308

shell 中的 for 循环不仅可以用文章所述的方法。


对于习惯其他语言 for 循环的朋友来说可能有点别扭。


for((assignment;condition:next));do

    command_1;

    command_2;

    commond_..;

done;

如上所示,这里的 for 循环与 C 中的相似,但并不完全相同。


通常情况下 shell 变量调用需要加 $,但是 for 的 (()) 中不需要,下面来看一个例子:


#!/bin/bash

for((i=1;i<=5;i++));do

    echo "这是第 $i 次调用";

done;

执行结果:


这是第1次调用

这是第2次调用

这是第3次调用

这是第4次调用

这是第5次调用

与 C 中相似,赋值和下一步执行可以放到代码之前循环语句之中执行,这里要注意一点:如果要在循环体中进行 for 中的 next 操作,记得变量要加 $,不然程序会变成死循环。


情空明月

   情空明月


  moo***v@gmail.com


5年前 (2018-02-27)

   This_Is_Y


  Thi***s_Y@qq.com


   参考地址


89

从 ubuntu 6.10 开始,ubuntu 就将先前默认的 bash shell 更换成了dash shell,其表现为 /bin/sh 链接倒了 /bin/dash 而不是传统的 /bin/bash。


可以通过 ls -l /bin/*sh 命令看到:




所以在使用 sh 命令执行脚本的时候实际使用的是 dash,而 dash 不支持这种 C 语言格式的 for 循环写法。


解决方法:使用 bash 代替 sh 运行脚本:


bash test.sh

This_Is_Y

   This_Is_Y


  Thi***s_Y@qq.com


   参考地址


2年前 (2021-01-18)

   风鹏正举


  cle***@126.com


5

如果 for 循环是按 1 递增的,可以利用 seq 命令来生成数字系列,参考写法如下:


#!/bin/bash

max=5


for index in `seq $max`

do

  echo $index

done

执行结果:


1

2

3

4

5

在某些情况下比使用 while 更加方便。


风鹏正举

   风鹏正举


  cle***@126.com


10个月前 (11-04)

   開色


  wrd***main@163.com


9

test 命令和 [ 底层是一个命令, [ 是一个命令,会自动检测右中括号 ],通过 which [ 查看 Linux 中命令的位置,test 不会自动检测右中括号 ] 。


[ 底层使用 c/c++ 编写的可以看它的源码:https://github.com/freebsd/freebsd-src/blob/master/bin/test/test.c。


[[ 是 bash shell 环境自己实现的判断方式,比 [ 更安全,例如:


1. [ 不能识别 $var 变量值


$ var=''

$ [ $var = '' ] && echo True

-bash: [: =: unary operator expected

$ [ "$var" = '' ] && echo True

True

$ [[ $var = '' ]] && echo True

True

2. [ 会把大于号、小于号识别为重定向符号,把 a 当成文件输入输出


$ var=

$ [ "$var" < a ] && echo True

-bash: a: No such file or directory

$ [ "$var" < a ] && echo True

True

$ [[ $var < a ]] && echo True

True

[ 相比于 [[ 的一个优点,应该是 bash shell 环境自己实现的 [[ 在其他 shell 环境不能兼容,所以 [ 有更好的可移植性。


详情可以看:


http://mywiki.wooledge.org/BashGuide/Practices#Bash_Tests


https://zhuanlan.zhihu.com/p/136591210


開色

   開色


  wrd***main@163.com


10个月前 (11-10)


海南做网站/制作网站/搭建网站/设计网站/开发网站-网站服务一站式


上往建站提供搭建网站域名注册官网备案服务网店详情页设计企业网店专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管网页美工排版,致力于域名申请竞价托管软文推广全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机网站推广百度竞价托管网站建设上网建站推广服务网络公司有哪些等业务,专业团队服务,效果好。

服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)


关键词:网站建设,企业网站,网站制作,网页设计,高端网站建设,企业网站制作,网页制作,制作网站,网站设计,高端网页设计,高端网站设计,做网站,自适应网站

全国服务热线
18114747181
二维码
手机端二维码
上往建站
地址:全国各地都有驻点商务 |  网站建设上往建站
在线咨询QQ:1120768800
 
QQ在线咨询
售前咨询热线
18114747181
营销顾问
营销顾问
售后服务热线
400-000-1116
售后服务
售后服务