免费注册 查看新帖 |

Chinaunix

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

shell编程问题,在线等 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-04-24 15:26 |只看该作者 |倒序浏览
脚本如下
#!/bin/bash
i=$(rsync  -avl --include "*/" --include "GameLog.ini" --exclude "*" /usr/richman/rich/gs1-game/ /usr/richman/GameLog | echo $?)
for $i=0
  do
   j=$(tar cvzf GameLog.tar.gz GameLog | echo $?)
        done
  for $j=0
    do
      rm -rf GameLog
       done
报错信息
./tar.sh: line 6: `$i=0': not a valid identifier
./tar.sh: line 10: `$j=0': not a valid identifier
大家帮我看下,我也就是想去查看上一命令是否执行完,如果是,就执行下个

论坛徽章:
0
2 [报告]
发表于 2008-04-24 15:31 |只看该作者
1. 這個問題在 linux 版系統篇來問似乎比較適合.

2. bash 內您的 for 語法使用錯誤。for 語法例子使用像是有:


  1. for i in 1 2 3 4 5
  2. do
  3.    echo $i
  4. done
复制代码


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


--

论坛徽章:
0
3 [报告]
发表于 2008-04-24 15:37 |只看该作者
现在就简单点
#!/bin/bash
i=$(rsync  -avl --include "*/" --include "GameLog.ini" --exclude "*" /usr/richman/rich/gs1-game/ /usr/richman/GameLog | echo $?)
if $i=0
  then
   tar cvzf GameLog.tar.gz GameLog
  fi

报错信息./tar.sh: line 3: 0=0: command not found

论坛徽章:
24
15-16赛季CBA联赛之北京
日期:2018-08-17 18:43:33技术图书徽章
日期:2018-08-22 12:53:57技术图书徽章
日期:2018-08-22 12:54:20技术图书徽章
日期:2018-08-22 12:54:3015-16赛季CBA联赛之福建
日期:2018-10-19 16:58:1619周年集字徽章-庆
日期:2019-08-27 13:28:5619周年集字徽章-19
日期:2019-08-27 13:31:2619周年集字徽章-19
日期:2019-08-27 13:31:2615-16赛季CBA联赛之同曦
日期:2019-09-05 12:03:2819周年集字徽章-周
日期:2019-09-06 18:54:5415-16赛季CBA联赛之上海
日期:2018-07-25 11:55:2615-16赛季CBA联赛之青岛
日期:2018-07-10 14:13:18
4 [报告]
发表于 2008-04-24 15:43 |只看该作者
原帖由 linux飞翔 于 2008-4-24 15:37 发表
现在就简单点
#!/bin/bash
i=$(rsync  -avl --include "*/" --include "GameLog.ini" --exclude "*" /usr/richman/rich/gs1-game/ /usr/richman/GameLog | echo $?)
if $i=0
  then
   tar cvzf GameLog ...

if 后面的一般是:

if [$i = 0]
then ....

论坛徽章:
0
5 [报告]
发表于 2008-04-24 15:45 |只看该作者
原帖由 linux飞翔 于 2008-4-24 15:37 发表
现在就简单点
#!/bin/bash
i=$(rsync  -avl --include "*/" --include "GameLog.ini" --exclude "*" /usr/richman/rich/gs1-game/ /usr/richman/GameLog | echo $?)
if $i=0


剛剛是 for, 目前又來一個 if ?

建議這位大哥先去翻一下 bash 文件,先把基本的語法弄懂似乎比較好呢  

--

论坛徽章:
24
15-16赛季CBA联赛之北京
日期:2018-08-17 18:43:33技术图书徽章
日期:2018-08-22 12:53:57技术图书徽章
日期:2018-08-22 12:54:20技术图书徽章
日期:2018-08-22 12:54:3015-16赛季CBA联赛之福建
日期:2018-10-19 16:58:1619周年集字徽章-庆
日期:2019-08-27 13:28:5619周年集字徽章-19
日期:2019-08-27 13:31:2619周年集字徽章-19
日期:2019-08-27 13:31:2615-16赛季CBA联赛之同曦
日期:2019-09-05 12:03:2819周年集字徽章-周
日期:2019-09-06 18:54:5415-16赛季CBA联赛之上海
日期:2018-07-25 11:55:2615-16赛季CBA联赛之青岛
日期:2018-07-10 14:13:18
6 [报告]
发表于 2008-04-24 15:47 |只看该作者
试试这个更简单的, 解决问题的办法是尽量把范围缩小.


  1. #!/bin/bash
  2. i=0
  3. if [ $i=0 ]
  4.   then
  5.      echo $i
  6.   fi
复制代码

论坛徽章:
0
7 [报告]
发表于 2008-04-24 15:48 |只看该作者
楼上的老大,不是我说你,你水平很高吗,我现在求救,你说for不行,我就换if,按你说的还不行?
再说for也行

论坛徽章:
0
8 [报告]
发表于 2008-04-24 15:49 |只看该作者

回复 #6 incle 的帖子

不是你说的问题,if [ $i=0 ]
可以写成if $i=0的
再说你先定义完了,还要if干啥

论坛徽章:
0
9 [报告]
发表于 2008-04-24 15:53 |只看该作者
原帖由 linux飞翔 于 2008-4-24 15:48 发表
楼上的老大,不是我说你,你水平很高吗,我现在求救,你说for不行,我就换if,按你说的还不行?
再说for也行


這位朋友您似乎不大客氣哦.... 不都提供 for 正確用法嗎,再者這些東西不是應該先自己看一下 manpage or google 一下就知道答案呼?


  1. $help
  2. for: for NAME [in WORDS ... ;] do COMMANDS; done
  3.      The `for' loop executes a sequence of commands for each member in a
  4.     list of items.  If `in WORDS ...;' is not present, then `in "$@"' is
  5.     assumed.  For each element in WORDS, NAME is set to that element, and
  6.     the COMMANDS are executed.
  7. for ((: for (( exp1; exp2; exp3 )); do COMMANDS; done
  8.      Equivalent to
  9.         (( EXP1 ))
  10.         while (( EXP2 )); do
  11.                 COMMANDS
  12.                 (( EXP3 ))
  13.         done
  14.     EXP1, EXP2, and EXP3 are arithmetic expressions.  If any expression is
  15.     omitted, it behaves as if it evaluates to 1.

复制代码


若您真的不大會用,請看一下基本教程也可以,比方 Bash Programming Intro HOWTO

http://tldp.org/HOWTO/Bash-Prog-Intro-HOWTO.html

--

论坛徽章:
0
10 [报告]
发表于 2008-04-24 15:56 |只看该作者
原帖由 linux飞翔 于 2008-4-24 15:49 发表
不是你说的问题,if [ $i=0 ]
可以写成if $i=0的
再说你先定义完了,还要if干啥


這位朋友您今天吃火藥了是嗎?

首先您這語法是錯誤的:

  1. if [ $i=0 ]
复制代码


正確語法應該是:

  1. if [ $i = 0 ]
复制代码


= 可以用 ==,另外數值比較可以寫成:

  1. if [ $i -eq 0 ]
复制代码


--
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP