日期:2014-05-16  浏览次数:21578 次

linux中 [: too many arguments 错误怎么处理?
shell中有这么一段代码

if [  -e ${v_file_name} ]; then

。。。。。

fi

在aix(6.1.0.0)中执行没有问题,到linux(Red Hat Enterprise Linux Server release 6.1 (Santiago))中执行就报如题的错误,请问这是什么原因?该怎么解决?谢谢!!!

------解决方案--------------------
sh 
ksh
csh
or anything else?

------解决方案--------------------
if [ -e "${v_file_name}" ]; then
    echo yes
fi

------解决方案--------------------
${v_file_name}    这个参数中间应该有空格或特殊字符,需要用双引号引起来,楼主可以查查双引号的作用,会让其中的元字符失效。
------解决方案--------------------
引用:
Quote: 引用:

${v_file_name}    这个参数中间应该有空格或特殊字符,需要用双引号引起来,楼主可以查查双引号的作用,会让其中的元字符失效。



试了,不行,我的${v_file_name} 有可能出现多个值的情况!
是有多个文件吗?文件是否需要一个一个的进行-e 判断呢?如需要,改改脚本吧。
------解决方案--------------------
引用:
Quote: 引用:

是有多个文件吗?文件是否需要一个一个的进行-e 判断呢?如需要,改改脚本吧。

不需要,只是数据量比较大,分了文件,文件名中加了个序号,只判断有文件存在就行,该怎么改呢?

楼主可以提供一个${v_file_name} 具体的值出来吗,方便提供建议
------解决方案--------------------
引用:
不需要,只是数据量比较大,分了文件,文件名中加了个序号,只判断有文件存在就行,该怎么改呢?
提供一个${v_file_name} 具体的值出来
file_name_001.dat
file_name_002.dat
file_name_003.dat

就以上这种!
 一个值就有可能是多个文件的吧 那这样就要拆开处理了
------解决方案--------------------

weblogic@z174774C6c16g120gs11-1:~/file> ll
total 0
-rw-r--r-- 1 weblogic bea 0 2013-12-10 08:13 file1.txt
-rw-r--r-- 1 weblogic bea 0 2013-12-10 08:14 file2.txt
weblogic@z174774C6c16g120gs11-1:~/file> name="file1.txt file2.txt"
weblogic@z174774C6c16g120gs11-1:~/file> echo $name 
------解决方案--------------------
 cut -d ' ' -f1
file1.txt
weblogic@z174774C6c16g120gs11-1:~/file> file=
weblogic@z174774C6c16g120gs11-1:~/file> echo $file 
------解决方案--------------------
 cut -d ' ' -f1

weblogic@z174774C6c16g120gs11-1:~/file> echo $?
0
weblogic@z174774C6c16g120gs11-1:~/file> 
 分割,取第一个域,然后判断第一个域值是否为空就可以了
------解决方案--------------------