[求助]程序的6,7行怎么理解?
-
- 帖子: 95
- 注册时间: 2011-05-21 19:35
[求助]程序的6,7行怎么理解?
#!/bin/bash
times=0
until [ "$times" = 3 ];
do
echo "I love linux."
sleep 2
times=`expr $times + 1`
done
这段小程序 我的理解是 从第0次 到 第四次 做以下的事 输出 “I love linux ”
可是第七行出现的sleep 2 是什么意思哦? 第七行的 expr 怎么理解啊?
这个程序的输出结果是输出4次 i love linux吗? 我执行后 一直输出 知道 我按下ctrl+ c
times=0
until [ "$times" = 3 ];
do
echo "I love linux."
sleep 2
times=`expr $times + 1`
done
这段小程序 我的理解是 从第0次 到 第四次 做以下的事 输出 “I love linux ”
可是第七行出现的sleep 2 是什么意思哦? 第七行的 expr 怎么理解啊?
这个程序的输出结果是输出4次 i love linux吗? 我执行后 一直输出 知道 我按下ctrl+ c
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: [求助]程序的6,7行怎么理解?
- 贴代码记得点下工具栏的 Code标签
- 连 sleep 2 都不明白,我只能推断你没学过 shell。既然如此,那就去学习吧。
-
- 帖子: 992
- 注册时间: 2007-12-05 10:57
- 系统: ubuntu14.04
- 来自: 金山
Re: [求助]程序的6,7行怎么理解?
sleep 2 亭2秒?
expr的作用是对后面的表达式做数学运算
你的结果不对
echo $times 循环中跟踪下times你就明白了
expr的作用是对后面的表达式做数学运算
你的结果不对
代码: 全选
#!/bin/bash
times=0
until [ "$times" = 3 ];
do
echo "I love linux."
sleep 2
echo $times
times=`expr $times + 1`
done
上次由 cao627 在 2012-04-09 19:30,总共编辑 1 次。
-
- 帖子: 95
- 注册时间: 2011-05-21 19:35
Re: [求助]程序的6,7行怎么理解?
前面发帖时 说过 我是上周五正式接触的shell 正在学……lilydjwg 写了:
- 贴代码记得点下工具栏的 Code标签
- 连 sleep 2 都不明白,我只能推断你没学过 shell。既然如此,那就去学习吧。
-
- 帖子: 95
- 注册时间: 2011-05-21 19:35
Re: [求助]程序的6,7行怎么理解?
cao627 写了:sleep 2 亭2秒?
expr的作用是对后面的表达式做数学运算
你的结果不对
代码: 全选
#!/bin/bash times=0 until [ "$times" = 3 ]; do echo "I love linux." sleep 2 echo $times times=`expr $times + 1` done
echo $times 循环中跟踪下times你就明白了
谢谢~
按您的代码输入输出的结果是
代码: 全选
I love linux.
0
I love linux.
1
I love linux.
2
-
- 帖子: 992
- 注册时间: 2007-12-05 10:57
- 系统: ubuntu14.04
- 来自: 金山
Re: [求助]程序的6,7行怎么理解?
echo $times
不是已经加在代码了里吗
输出 0,1,2
没有3吧?理解?
不是已经加在代码了里吗
输出 0,1,2
没有3吧?理解?
-
- 帖子: 95
- 注册时间: 2011-05-21 19:35
Re: [求助]程序的6,7行怎么理解?
cao627 写了:echo $times
不是已经加在代码了里吗
输出 0,1,2
没有3吧?理解?
嗯嗯 until N 不包含N 到N—1时停止 是吧?
没理解错的话echo $+变量 是一种追踪变量的方法吧~
另外一点就是“=” 是不是表示赋值时,前后没有空格 ,表示等于(+-*/类似)时,前后有空格啊?
- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: [求助]程序的6,7行怎么理解?
前后没有空格并且位于命令位置时表示赋值(所以 curl -F [email protected] img.vim-cn.com 中的等号不表示赋值,因为它位于第二个参数)。所以 [ $times = 3 ] 中的等号也不表示赋值。它作为参数之一传给 [ 命令,[ 认为它表示字符串相等性测试。参数之间需要有空格隔开,所以这个 = 前后有空格。fengmanloude 写了:cao627 写了:echo $times
不是已经加在代码了里吗
输出 0,1,2
没有3吧?理解?
嗯嗯 until N 不包含N 到N—1时停止 是吧?
没理解错的话echo $+变量 是一种追踪变量的方法吧~
另外一点就是“=” 是不是表示赋值时,前后没有空格 ,表示等于(+-*/类似)时,前后有空格啊?
- 枫叶饭团
- 帖子: 14683
- 注册时间: 2010-06-16 1:05
- 系统: Mac OS X
- 来自: Tencent
- 联系:
Re: [求助]程序的6,7行怎么理解?
又让我想起了[居然是一个程序
-
- 帖子: 992
- 注册时间: 2007-12-05 10:57
- 系统: ubuntu14.04
- 来自: 金山
Re: [求助]程序的6,7行怎么理解?
楼主这么理解好了:
=做为赋值符号时,它好像架起了一座桥,桥不能断开(不能有空格),否者对象过不了桥(无法将=后面的值赋给前面的变量)
= 做等号比较前后两对象时 ,必须要空格,空格是shell分析语法的分隔符,就像英语的句子,单词与单词必须要有分隔符(空格),否者人理解的时候就困难了 =对shell来说也是一个“单词"
shell的“单词”很奇怪,长的很长,如 /home/xxx/aaa/file.png(不管这个目录再长,对shell来说,你也是在告诉它一件事),短的很短,如 | (但是再短,对shell来说也有其独立的意义,所以也是“单词”)。
until 英文是直到的意思
做一件事(do echo "I love linux."),直到你累了( n = 3)
你累了(n = 3),还做这件事(do echo "I love linux.")吗?
echo $变量 本身的作用仅仅是显示变量的内容,
你把这个命令写在你需要的位置,就是在查看该变量在当时的值,这个意义是跟踪
=做为赋值符号时,它好像架起了一座桥,桥不能断开(不能有空格),否者对象过不了桥(无法将=后面的值赋给前面的变量)
= 做等号比较前后两对象时 ,必须要空格,空格是shell分析语法的分隔符,就像英语的句子,单词与单词必须要有分隔符(空格),否者人理解的时候就困难了 =对shell来说也是一个“单词"
shell的“单词”很奇怪,长的很长,如 /home/xxx/aaa/file.png(不管这个目录再长,对shell来说,你也是在告诉它一件事),短的很短,如 | (但是再短,对shell来说也有其独立的意义,所以也是“单词”)。
until 英文是直到的意思
做一件事(do echo "I love linux."),直到你累了( n = 3)
你累了(n = 3),还做这件事(do echo "I love linux.")吗?
echo $变量 本身的作用仅仅是显示变量的内容,
你把这个命令写在你需要的位置,就是在查看该变量在当时的值,这个意义是跟踪
-
- 帖子: 95
- 注册时间: 2011-05-21 19:35
Re: [求助]程序的6,7行怎么理解?
lilydjwg 写了:前后没有空格并且位于命令位置时表示赋值(所以 curl -F [email protected] img.vim-cn.com 中的等号不表示赋值,因为它位于第二个参数)。所以 [ $times = 3 ] 中的等号也不表示赋值。它作为参数之一传给 [ 命令,[ 认为它表示字符串相等性测试。参数之间需要有空格隔开,所以这个 = 前后有空格。fengmanloude 写了:cao627 写了:echo $times
不是已经加在代码了里吗
输出 0,1,2
没有3吧?理解?
嗯嗯 until N 不包含N 到N—1时停止 是吧?
没理解错的话echo $+变量 是一种追踪变量的方法吧~
另外一点就是“=” 是不是表示赋值时,前后没有空格 ,表示等于(+-*/类似)时,前后有空格啊?

-
- 帖子: 95
- 注册时间: 2011-05-21 19:35
Re: [求助]程序的6,7行怎么理解?
cao627 写了:楼主这么理解好了:
=做为赋值符号时,它好像架起了一座桥,桥不能断开(不能有空格),否者对象过不了桥(无法将=后面的值赋给前面的变量)
= 做等号比较前后两对象时 ,必须要空格,空格是shell分析语法的分隔符,就像英语的句子,单词与单词必须要有分隔符(空格),否者人理解的时候就困难了 =对shell来说也是一个“单词"
shell的“单词”很奇怪,长的很长,如 /home/xxx/aaa/file.png(不管这个目录再长,对shell来说,你也是在告诉它一件事),短的很短,如 | (但是再短,对shell来说也有其独立的意义,所以也是“单词”)。
until 英文是直到的意思
做一件事(do echo "I love linux."),直到你累了( n = 3)
你累了(n = 3),还做这件事(do echo "I love linux.")吗?
echo $变量 本身的作用仅仅是显示变量的内容,
你把这个命令写在你需要的位置,就是在查看该变量在当时的值,这个意义是跟踪


-
- 帖子: 95
- 注册时间: 2011-05-21 19:35
Re: [求助]程序的6,7行怎么理解?
枫叶饭团 写了:又让我想起了[居然是一个程序

- lilydjwg
- 论坛版主
- 帖子: 4258
- 注册时间: 2009-04-11 23:46
- 系统: Arch Linux
- 联系:
Re: [求助]程序的6,7行怎么理解?
谢谢你的鲜花~fengmanloude 写了:[...]
不过,看到每篇帖子右下角的那个小黄手没?可以点的哦~