显示文件是否存在——如果我使用 1 个参数,它可以工作,但是当我使用多个时,它会显示错误
showing if files exist - if i use 1 argument it works but when i use multiple it shows an error
新手 bash
任何人都知道这个问题似乎很容易解决,但我自己就是想不通!
基本上,我正在执行的命令对用户输入的参数做了一些处理,这些参数是文件名[这是一个作业,所以我不能讨论内容]我们只是说它列出了例如文件
用户可以输入的文件数量没有限制
代码(有问题的主要部分)
if [ -e "$*" ]
then
ls "$*"
echo "your files are listed"
else
echo "file does not exist"
exit 0
fi
基本上 if 语句由于某种原因不起作用
我想要它,以便用户可以输入任意数量的参数
并且 if 语句将检查所有参数(文件)是否存在
到目前为止,当我只输入 1 个参数时,它会检查它是否存在
但是当我输入超过 1 个时,它会弹出错误 "too many arguments"
以及它不存在的错误消息
我们将不胜感激:)
如果你觉得你会帮助我作弊,请不要担心主要代码没问题但它只是这个验证位!
test -e
期望 单个文件 成为下一个参数。 "$*"
,相比之下,将所有参数合并为一个名称——因此,如果您有名为 first file.txt
和 second file.txt
的文件,[ -e "$*" ]
将查看单个文件是否存在类似 first file.txt second file.txt
的名称(名称中带有空格和两个 .txt
扩展名)。
for file in "$@"; do ## this could also be just "for file; do"
if ! [ -e "$file" ]; then ## note that we're checking one at a time
echo "File $file does not exist" >&2
exit 1
fi
ls "$file" ## hopefully this is just for debugging
done
echo "Your files all exist" >&2
exit 0 ## typically unnecessary -- default exit status is that of the last command
## ...and echo is unlikely to fail.
请注意 ls
should not be used programatically,即使您 确实 只想打印实际存在供人类使用的文件的名称(而不是 scripted/programmatic使用),使用所有存在的名称调用一次 ls
比每个文件调用一次更有效;然而,解决这个问题显然不在所问问题的范围内。
新手 bash
任何人都知道这个问题似乎很容易解决,但我自己就是想不通!
基本上,我正在执行的命令对用户输入的参数做了一些处理,这些参数是文件名[这是一个作业,所以我不能讨论内容]我们只是说它列出了例如文件
用户可以输入的文件数量没有限制 代码(有问题的主要部分)
if [ -e "$*" ]
then
ls "$*"
echo "your files are listed"
else
echo "file does not exist"
exit 0
fi
基本上 if 语句由于某种原因不起作用
我想要它,以便用户可以输入任意数量的参数
并且 if 语句将检查所有参数(文件)是否存在
到目前为止,当我只输入 1 个参数时,它会检查它是否存在
但是当我输入超过 1 个时,它会弹出错误 "too many arguments" 以及它不存在的错误消息
我们将不胜感激:)
如果你觉得你会帮助我作弊,请不要担心主要代码没问题但它只是这个验证位!
test -e
期望 单个文件 成为下一个参数。 "$*"
,相比之下,将所有参数合并为一个名称——因此,如果您有名为 first file.txt
和 second file.txt
的文件,[ -e "$*" ]
将查看单个文件是否存在类似 first file.txt second file.txt
的名称(名称中带有空格和两个 .txt
扩展名)。
for file in "$@"; do ## this could also be just "for file; do"
if ! [ -e "$file" ]; then ## note that we're checking one at a time
echo "File $file does not exist" >&2
exit 1
fi
ls "$file" ## hopefully this is just for debugging
done
echo "Your files all exist" >&2
exit 0 ## typically unnecessary -- default exit status is that of the last command
## ...and echo is unlikely to fail.
请注意 ls
should not be used programatically,即使您 确实 只想打印实际存在供人类使用的文件的名称(而不是 scripted/programmatic使用),使用所有存在的名称调用一次 ls
比每个文件调用一次更有效;然而,解决这个问题显然不在所问问题的范围内。