当前位置: 技术问答>linux和unix
这个shell脚本在Linux下可以执行,为什么在Solaris中报错!
来源: 互联网 发布时间:2016-11-30
本文导语: 要求: 1、读取当前目录下所有后缀为.dat的文件名,如st_operation_ch.dat 2、将文件名去除.dat的后缀,变成st_operation_ch 3、删除从尾部开始的3个字符串,如删除了"_ch",变为st_operation. 4、有了st_operation的表名之后,利用此...
要求:
1、读取当前目录下所有后缀为.dat的文件名,如st_operation_ch.dat
2、将文件名去除.dat的后缀,变成st_operation_ch
3、删除从尾部开始的3个字符串,如删除了"_ch",变为st_operation.
4、有了st_operation的表名之后,利用此参数写文件
下面是脚本,在linux SUSE中执行良好,但在Solaris中提示错误,
for i in $(ls *.dat); do
这个语句一开始就报错:'$' unexpected
哪位大侠知道该怎么修改,能保证在linux和solaris下都能运行。
1、读取当前目录下所有后缀为.dat的文件名,如st_operation_ch.dat
2、将文件名去除.dat的后缀,变成st_operation_ch
3、删除从尾部开始的3个字符串,如删除了"_ch",变为st_operation.
4、有了st_operation的表名之后,利用此参数写文件
下面是脚本,在linux SUSE中执行良好,但在Solaris中提示错误,
for i in $(ls *.dat); do
这个语句一开始就报错:'$' unexpected
哪位大侠知道该怎么修改,能保证在linux和solaris下都能运行。
#!/bin/sh
LANG="_ch"
for i in $(ls *.dat); do
DATAFILENAME=${i/.dat/}
TABLENAME=${DATAFILENAME%%$LANG}
echo $TABLENAME
done
|
solaris默认的shell都不是GNU的bash
你用的那好几个语法应该都是bash的!
你用的那好几个语法应该都是bash的!
|
试试
for i in *.dat
do
DATAFILENAME=`echo $i|awk -F. '{print $1}'`
TABLENAME=`echo DATAFILENAME|sed 's/...$//'`
done
|
就是将结尾的任意三个字符给去掉