Chinaunix

标题: 帮忙看下个简单的shell程序 [打印本页]

作者: xbdzsmc    时间: 2008-05-07 09:58
标题: 帮忙看下个简单的shell程序
#! /bin/bash
i=1
while [i -le 20];do
echo $i
root -b
.x yyy_signal.cxx("run_9c.0$i")
.q
done
i=$(($i+1))

其中root -b是打开一个应用软件, 在这个软件里运行程序.x yyy_signal.cxx("run_9c.0$i"),.q是退出这个
软件
现在报错是"line 6: syntax error near unexpected token `('和"line 6: `.x yyy_signal.cxx("run_9c.0$i")'
不懂怎么回事了,高手帮帮忙
"
"
作者: kenduest    时间: 2008-05-07 13:11
這段 code 內,首先 while 語法有問題,[] 內側需要用空白分隔開。再來您要執行的程序後續要輸入的東西不是直接接著寫,因為這是給 shell 閱讀的。


  1. #! /bin/bash
  2. i=1
  3. while [ i -le 20 ]; do
  4.        echo $i
  5.        root -b << EOF
  6. .x yyy_signal.cxx("run_9c.0$i")
  7. .q
  8. EOF

  9. done
  10. i=$(($i+1))

复制代码


--
作者: xbdzsmc    时间: 2008-05-07 14:21
标题: 回复 #2 kenduest 的帖子
什么叫做空白分割符啊?具体怎么写!
我如果不循环,直接写:
#! /bin/bash
       root -b << EOF
.x yyy_signal.cxx("run_9c.012")
.q
EOF

是可以用的啊
作者: xbdzsmc    时间: 2008-05-07 14:25
标题: 回复 #2 kenduest 的帖子
对不起,我理解错你的意思了!
现在run的时候还是错的
出现: line 3: [: i: integer expression expected
作者: xbdzsmc    时间: 2008-05-07 14:42
标题: 回复 #2 kenduest 的帖子
应该把while [ i -le 20 ]; do改为while [ $i -le 20 ]; do
对吗?
作者: kenduest    时间: 2008-05-07 14:46
原帖由 xbdzsmc 于 2008-5-7 14:42 发表
应该把while [ i -le 20 ]; do改为while [ $i -le 20 ]; do
对吗?


嗯.... 加上  $ 取變量值與加上兩邊空白

--
作者: xbdzsmc    时间: 2008-05-07 14:52
标题: 回复 #6 kenduest 的帖子
对,还有个问题done和i=$(($i+1))的位置搞反了,呵呵!
谢谢你了,我第一次自己写shell程序,谢谢你的指导!
作者: kenduest    时间: 2008-05-07 15:00
原帖由 xbdzsmc 于 2008-5-7 14:52 发表
对,还有个问题done和i=$(($i+1))的位置搞反了,呵呵!
谢谢你了,我第一次自己写shell程序,谢谢你的指导!


後續建議可以移駕到 bbs.chinaunix.net/ 那邊的 script 討論版討論這個會更適合,因為 script 不大算是編程語言所以這個版討論比較..

--
作者: MMMIX    时间: 2008-05-07 23:19
原帖由 kenduest 于 2008-5-7 15:00 发表


後續建議可以移駕到 bbs.chinaunix.net/ 那邊的 script 討論版討論這個會更適合,因為 script 不大算是編程語言所以這個版討論比較..

--

现在是没办法做这种移动的。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2