Chinaunix

标题: FileName2=${FileName:3}$Fix: [打印本页]

作者: 吹风筒    时间: 2011-10-18 10:50
标题: FileName2=${FileName:3}$Fix:
下面部门代码是我之前放上linux使用,很成功。
现在转到unix上 就报错了
报错信息:FileName2=${FileName:3}$Fix: 0403-011 The specified substitution is not valid for this command.
意思应该是unix中没有这个命令吧
但是又不知道拿什么命令代替。
   
cp  $FileName  $FileName2
  1. Fix="_`date +%Y%m%d`"
  2. for FileName in $(ls  RunLog_* )
  3. do      
  4. FileName2=${FileName:3}$Fix
  5. #备份当前日志文件        
  6. cp  $FileName  $FileName2
复制代码
代码意图就是想取FileName字符串的第三个字符取起。比如FileName为RunLog_1122,则想获取Log_1122


请问在unix应该怎么改呢?
作者: Shell_HAT    时间: 2011-10-18 10:55
  1. FileName=RunLog_1122
  2. echo $FileName | cut -c4-
复制代码

作者: chmod755    时间: 2011-10-18 10:55
bash-3.00$ FileName=abcdefg
bash-3.00$ FileName2=${FileName:3}
bash-3.00$ echo $FileName2
defg
bash-3.00$ uname -a
SunOS tran-sh 5.10 Generic_118855-33 i86pc i386 i86pc


Solaris是可以这么用的

试试把
FileName2=${FileName:3}$Fix
改成
FileName2=${FileName:3}${Fix}
作者: 吹风筒    时间: 2011-10-18 11:08
回复 3# chmod755


    试过了 不行 还是报同样错误

   对了 我这个是AIX
作者: waker    时间: 2011-10-18 11:09
回复 4# 吹风筒

那就参考2#吧
作者: chmod755    时间: 2011-10-18 11:13
回复 4# 吹风筒


do下面的   
${FileName:3}得到字符串吗?

echo ${FileName:3}一下
作者: Shell_HAT    时间: 2011-10-18 11:17
回复 6# chmod755


楼主的AIX木有安装bash
作者: 吹风筒    时间: 2011-10-18 11:19
回复 2# Shell_HAT


    按你说的我改成了
  1. FileName2=${FileName | cut -c4-}$Fix
复制代码
结果还是报错 呜呜 为什么呀?
附:
  1. cd  /export/ALL_LOG
  2. Fix="_`date +%Y%m%d`"

  3. for FileName in $(ls  RunLog_* )
  4. do      
  5. FileName2=${FileName | cut -c4-}$Fix

  6. #备份当前日志文件        
  7. cp  $FileName  $FileName2
复制代码
我就是想结果

cp出来的文件Log_1122.日期
作者: 吹风筒    时间: 2011-10-18 11:22
回复 6# chmod755
  1. for FileName in $(ls  RunLog_* )
  2. do
  3. echo ${FileName:3}

  4. cp  $FileName  $FileName2
复制代码
报错了
  1. ${FileName:3}: 0403-011 The specified substitution is not valid for this command.
复制代码

作者: mpstat    时间: 2011-10-18 11:24
你的第一行是不是#!/bin/sh
把它改成#!/bin/bash试试
作者: waker    时间: 2011-10-18 11:24
Fix="_`date +%Y%m%d`"
这句都会用``,隔了两行就不会用了?
作者: yinyuemi    时间: 2011-10-18 11:24
回复 9# 吹风筒

所有的变量加双引号试试
作者: Shell_HAT    时间: 2011-10-18 11:26
回复 8# 吹风筒
  1. cd /export/ALL_LOG
  2. Fix="_`date +%Y%m%d`"
  3. for FileName in `ls  RunLog_* `
  4. do
  5.     FileName2=`echo $FileName | cut -c4-`$Fix
  6.     #备份当前日志文件
  7.     cp  $FileName  $FileName2
  8. done
复制代码

作者: Shell_HAT    时间: 2011-10-18 11:27
回复 12# yinyuemi


他的AIX不支持${}这种变量替换
作者: waker    时间: 2011-10-18 11:30
回复  chmod755


楼主的AIX木有安装bash
Shell_HAT 发表于 2011-10-18 11:17



    至少有ksh93吧?估计楼主根本没看过用户指南
作者: mpstat    时间: 2011-10-18 11:32
回复 16# 吹风筒


    你哪个版本的aix,我这边的都默认装上了bash

只是sh链接默认不是bash
作者: 吹风筒    时间: 2011-10-18 11:42
回复 15# waker


    哥,那台机器又不是我的,我只是远程上去操作,放个脚本进去,我当然不知道它都装了什么东西拉 只知道它是AIX
作者: chmod755    时间: 2011-10-18 11:49
回复  waker


    哥,那台机器又不是我的,我只是远程上去操作,放个脚本进去,我当然不知道它都装了 ...
吹风筒 发表于 2011-10-18 11:42



    自己环境不熟悉,脚本跑不起来,先找环境有没有配置对吧?

从源头找
作者: waker    时间: 2011-10-18 11:54
回复  waker


    哥,那台机器又不是我的,我只是远程上去操作,放个脚本进去,我当然不知道它都装了 ...
吹风筒 发表于 2011-10-18 11:42


看来你的胆子比脑子大啊
作者: 吹风筒    时间: 2011-10-18 11:58
回复 13# Shell_HAT


    内牛满面啊 居然可以了
感谢各位大虾 慷慨相助!




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