免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2138 | 回复: 9
打印 上一主题 下一主题

关于运行及运行环境 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-06-11 16:38 |只看该作者 |倒序浏览
#!/bin/csh
for ((i=1;i<=10;i++))
do
   echo "num is $i"
done

我的环境是CSH,我用csh script.csh运行结果是: Badly placed ()'s
用sh script.csh运行结果是:line2:syntax error near unexpected token'
line2:'for ((i=1;i<=10;i++))

请问:错在哪里? 谢谢高手指教!

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
2 [报告]
发表于 2007-06-11 16:44 |只看该作者
原帖由 shengqin 于 2007-6-11 16:38 发表
#!/bin/csh
for ((i=1;i<=10;i++))
do
   echo "num is $i"
done

我的环境是CSH,我用csh script.csh运行结果是: Badly placed ()'s
用sh script.csh运行结果是:line2:syntax error near ...

csh没for结构, 只有foreach结构

论坛徽章:
0
3 [报告]
发表于 2007-06-11 16:52 |只看该作者
那用sh运行为什么不可以呢

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
4 [报告]
发表于 2007-06-11 17:03 |只看该作者
use bash

论坛徽章:
0
5 [报告]
发表于 2007-06-11 17:10 |只看该作者
#!/bin/csh
if ( $# -eq 1 ) then
echo "hello o"
endif
用$csh script.csh 1运行结果为:if ( 1 -eq 1 ) then
                                            if:Expression Syntax
感觉在运行运算程序时,总是不能得出想要的结果。
上面的这个运行结果是什么意思啊。

[ 本帖最后由 shengqin 于 2007-6-11 17:13 编辑 ]

论坛徽章:
0
6 [报告]
发表于 2007-06-11 17:12 |只看该作者
原帖由 waker 于 2007-6-11 17:03 发表
use bash


我用$bash script.csh运行后的结果和用$sh script.csh的结果一样。

论坛徽章:
0
7 [报告]
发表于 2007-06-12 04:38 |只看该作者
原帖由 shengqin 于 2007-6-11 17:10 发表
#!/bin/csh
if ( $# -eq 1 ) then
echo "hello o"
endif
用$csh script.csh 1運行結果為:if ( 1 -eq 1 ) then
                                            if:Expression Syntax
感覺在運行運算程序時,總是不能得出想要的結果。
上面的這個運行結果是什麼意思啊。


你的問題蠻有趣的...

1. 你一開始張貼的文章,那語法是 bash 的,但是你卻使用 csh 來執行 ?

2. 上面這段 code 還會混合 "-eq" 這個 bash 特有的語法在 csh 內使用 ?

若你要的是 csh 語法,請使用:


  1. if ( $# == 1 ) then
  2.   echo "hello o"
  3. endif
复制代码


或者是:


  1. if ( $#argv == 1 ) then
  2.   echo "hello o"
  3. endif
复制代码


至於你一開始說的程式碼:


  1. for ((i=1;i<=10;i++))
  2. do
  3.    echo "num is $i"
  4. done
复制代码


這個不可以用 sh 執行,因為那個 for(()) 是 bash 特有語法,你要用 bash 執行。另外 bash 以前的 1.x 版本不支援,印象中 3.x 開始有支援該語法 (3.x 開始 ? 不確定,請自行查閱)。所以你得先確認一下你的 bash 是哪個版本。

--

论坛徽章:
0
8 [报告]
发表于 2007-06-12 09:32 |只看该作者
非常谢谢楼上的回答!
我一直用的很迷糊,我的控制语句比如if ,for,while,foreach,,,都不能正确运行,我想到的可能的原因也是版本的问题,我的脚本是csh的,
$man csh显示TCSH(1)
可我没有关于csh相关的语法资料,所以就试着用了各种环境下的语法。如果能提供这方面的资料将不胜感激!

谢谢kenduest!

论坛徽章:
8
摩羯座
日期:2014-11-26 18:59:452015亚冠之浦和红钻
日期:2015-06-23 19:10:532015亚冠之西悉尼流浪者
日期:2015-08-21 08:40:5815-16赛季CBA联赛之山东
日期:2016-01-31 18:25:0515-16赛季CBA联赛之四川
日期:2016-02-16 16:08:30程序设计版块每日发帖之星
日期:2016-06-29 06:20:002017金鸡报晓
日期:2017-01-10 15:19:5615-16赛季CBA联赛之佛山
日期:2017-02-27 20:41:19
9 [报告]
发表于 2007-06-12 11:21 |只看该作者
IBM就有一些中文文档
http://publib.boulder.ibm.com/in ... admndita/shells.htm

建议通读三五遍以后再去追究细节

论坛徽章:
0
10 [报告]
发表于 2007-06-12 11:30 |只看该作者
好东东,谢谢啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP