LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 920|回复: 12

bash shell移植到csh[已解决]

[复制链接]
发表于 2004-3-30 15:29:26 | 显示全部楼层 |阅读模式
  1. #!/bin/csh

  2. # Usage:deletel all file in this dic.

  3. for a in `ls`
  4. do
  5.         rm $a
  6.         echo $a 'is deleted!'
  7. done
复制代码


此shell脚本以前在bash下正常运行,为什么在csh下无法运行呢?


  1. ./rmall
  2. for: Command not found.
  3. do: Command not found.
  4. a: Undefined variable.
复制代码

是否csh下没有for..do循环?如此shell要在csh下运行,要如何更改?
发表于 2004-3-30 15:34:33 | 显示全部楼层

回复: bash shell移植到csh

最初由 ge_johnny 发表
  1. #!/bin/csh
  2. # Usage:deletel all file in this dic.
  3. for a in `ls`
  4. do
  5.         rm $a
  6.         echo $a 'is deleted!'
  7. done
复制代码

此shell脚本以前在bash下正常运行,为什么在csh下无法运行呢?
  1. ./rmall
  2. for: Command not found.
  3. do: Command not found.
  4. a: Undefined variable.
复制代码
是否csh下没有for..do循环?如此shell要在csh下运行,要如何更改?

见置顶:【TCSH shell编程入门】之foreach结构:
http://www.linuxsir.cn/bbs/showthread.php?threadid=35732
 楼主| 发表于 2004-3-30 16:14:35 | 显示全部楼层
不好意思哈~~
发贴前粗略的看一下,没找的for in结构的就没看:p

改成这样成吗?

  1. #!/bin/csh

  2. # Usage:deletel all file in this dic.
  3. set a
  4. foreach a `ls`
  5. do
  6.         rm $a
  7.         echo $a 'is deleted!'
  8. done
复制代码
发表于 2004-3-30 16:24:41 | 显示全部楼层
  1. foreach var (`ls`)
  2. echo $var
  3. end
复制代码
循环控制结构: 功能
while (expression) 只要expression为真,则重复执行commands,
commands 直到expression为假时跳出循环
end

foreach variable (argument-list)迭代循环获得和argument-list中一样多的参数
commands (每次循环variable被设置为列表的下一个参数;
end 操作方式同BSH)

TCSH中的控制结构有别于其他的shell,因为它更接近编程语言(C).TCSH的条件表达
式的值为true/false.BASH和TCSH主要区别在于TCSH的结构不可重定向或进行管道
输出.
 楼主| 发表于 2004-3-30 16:28:55 | 显示全部楼层
最初由 javalee 发表

  1. foreach var (`ls`)
  2. echo $var
  3. end
复制代码


呵呵,我试了,但是那个目录下的文件太多,执行时出错,好像是循环的参数太多的缘故
发表于 2004-3-30 16:32:22 | 显示全部楼层
最初由 ge_johnny 发表
呵呵,我试了,但是那个目录下的文件太多,执行时出错,好像是循环的参数太多的缘故

把错误贴出来,按理说循环结构是对的,错误应该出在ls的输出上~
 楼主| 发表于 2004-3-30 16:39:33 | 显示全部楼层
最初由 javalee 发表
把错误贴出来,按理说循环结构是对的,错误应该出在ls的输出上~


:p :p

ls命令上没打括号

真马虎~~
发表于 2004-3-30 16:49:14 | 显示全部楼层
最初由 ge_johnny 发表
:p :p

ls命令上没打括号

真马虎~~

:beat,以后编写文件一定要仔细,论坛里都有现成的入门教程和实例,:thank
发表于 2004-3-30 23:48:36 | 显示全部楼层
呵呵,BSD上的默认shell是csh吗?看来我还得学csh(我只懂bash)啦。:cool:
发表于 2004-3-30 23:50:42 | 显示全部楼层
最初由 home_king 发表
呵呵,BSD上的默认shell是csh吗?看来我还得学csh(我只懂bash)啦。:cool:

装一个bash不就OK啦~~ :p
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表