linux中 [: too many arguments 错误怎么处理?

时间:2021-04-10 23:21:54
shell中有这么一段代码

if [  -e ${v_file_name} ]; then

。。。。。

fi

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

13 个解决方案

#1


sh 
ksh
csh
or anything else?

#2


if [ -e "${v_file_name}" ]; then
    echo yes
fi

#3


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

#4


引用 1 楼 erhou134 的回复:
sh 
ksh
csh
or anything else?



bash!!

#5


引用 2 楼 ljc007 的回复:
if [ -e "${v_file_name}" ]; then
    echo yes
fi


试了,不行,我的${v_file_name} 有可能出现多个值的情况!

#6


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



试了,不行,我的${v_file_name} 有可能出现多个值的情况!

#7


引用 6 楼 lqb2008 的回复:
Quote: 引用 3 楼 magi1201 的回复:

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



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

#8


引用 7 楼 magi1201 的回复:
Quote: 引用 6 楼 lqb2008 的回复:

Quote: 引用 3 楼 magi1201 的回复:

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



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


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

#9


引用 8 楼 lqb2008 的回复:
Quote: 引用 7 楼 magi1201 的回复:

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

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

楼主可以提供一个${v_file_name} 具体的值出来吗,方便提供建议

#10


引用 9 楼 magi1201 的回复:
Quote: 引用 8 楼 lqb2008 的回复:

Quote: 引用 7 楼 magi1201 的回复:

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

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

楼主可以提供一个${v_file_name} 具体的值出来吗,方便提供建议


file_name_001.dat
file_name_002.dat
file_name_003.dat

就以上这种!

#11


引用 10 楼 lqb2008 的回复:
不需要,只是数据量比较大,分了文件,文件名中加了个序号,只判断有文件存在就行,该怎么改呢?
提供一个${v_file_name} 具体的值出来
file_name_001.dat
file_name_002.dat
file_name_003.dat

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

#12



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> 
 分割,取第一个域,然后判断第一个域值是否为空就可以了

#13


引用 10 楼 lqb2008 的回复:
Quote: 引用 9 楼 magi1201 的回复:

Quote: 引用 8 楼 lqb2008 的回复:

Quote: 引用 7 楼 magi1201 的回复:

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

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

楼主可以提供一个${v_file_name} 具体的值出来吗,方便提供建议


file_name_001.dat
file_name_002.dat
file_name_003.dat

就以上这种!

分别判断吧,先解析有多少文件名称,然后依次判断是否存在

#1


sh 
ksh
csh
or anything else?

#2


if [ -e "${v_file_name}" ]; then
    echo yes
fi

#3


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

#4


引用 1 楼 erhou134 的回复:
sh 
ksh
csh
or anything else?



bash!!

#5


引用 2 楼 ljc007 的回复:
if [ -e "${v_file_name}" ]; then
    echo yes
fi


试了,不行,我的${v_file_name} 有可能出现多个值的情况!

#6


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



试了,不行,我的${v_file_name} 有可能出现多个值的情况!

#7


引用 6 楼 lqb2008 的回复:
Quote: 引用 3 楼 magi1201 的回复:

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



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

#8


引用 7 楼 magi1201 的回复:
Quote: 引用 6 楼 lqb2008 的回复:

Quote: 引用 3 楼 magi1201 的回复:

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



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


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

#9


引用 8 楼 lqb2008 的回复:
Quote: 引用 7 楼 magi1201 的回复:

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

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

楼主可以提供一个${v_file_name} 具体的值出来吗,方便提供建议

#10


引用 9 楼 magi1201 的回复:
Quote: 引用 8 楼 lqb2008 的回复:

Quote: 引用 7 楼 magi1201 的回复:

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

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

楼主可以提供一个${v_file_name} 具体的值出来吗,方便提供建议


file_name_001.dat
file_name_002.dat
file_name_003.dat

就以上这种!

#11


引用 10 楼 lqb2008 的回复:
不需要,只是数据量比较大,分了文件,文件名中加了个序号,只判断有文件存在就行,该怎么改呢?
提供一个${v_file_name} 具体的值出来
file_name_001.dat
file_name_002.dat
file_name_003.dat

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

#12



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> 
 分割,取第一个域,然后判断第一个域值是否为空就可以了

#13


引用 10 楼 lqb2008 的回复:
Quote: 引用 9 楼 magi1201 的回复:

Quote: 引用 8 楼 lqb2008 的回复:

Quote: 引用 7 楼 magi1201 的回复:

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

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

楼主可以提供一个${v_file_name} 具体的值出来吗,方便提供建议


file_name_001.dat
file_name_002.dat
file_name_003.dat

就以上这种!

分别判断吧,先解析有多少文件名称,然后依次判断是否存在