I want to check if the given file exists However, I do not know how to properly write the condition to point to other files
我想检查给定的文件是否存在但是,我不知道如何正确地写条件指向其他文件
#!/bin/bash
if [ $# -ge 2 ]
then
for i in `seq 1 $#`
do
if [ -e ${$i} ]
then
echo "yes"
else
echo "not exist"
fi
done
else
echo ""
fi
2 个解决方案
#1
1
Your condition should be:
你的病情应该是:
if [ -e "$i" ]
not:
if [ -e ${$i} ]
I'm not clear about what you are asking. Are you passing filenames as arguments to the script? If so, you need to loop over the arguments like this:
我不清楚你在问什么。您是否将文件名作为参数传递给脚本?如果是这样,你需要循环遍历这样的参数:
for file in "$@"
do
if [ -e "$file" ]
then
echo "$file exists"
else
echo "$file does not exist"
fi
done
#2
0
From man bash
, section CONDITIONAL EXPRESSIONS
:
从man bash,节有条件的表达:
Conditional expressions are used by the [[ compound
command and the test and [ builtin commands to test
file attributes and perform string and arithmetic
comparisons. [...]
-a file
True if file exists.
-b file
True if file exists and is a block special file.
-c file
True if file exists and is a character special file.
-d file
True if file exists and is a directory.
-e file
True if file exists.
-f file
True if file exists and is a regular file.
-g file
True if file exists and is set-group-id.
-h file
True if file exists and is a symbolic link.
-k file
True if file exists and its ``sticky'' bit is set.
-p file
True if file exists and is a named pipe (FIFO).
-r file
True if file exists and is readable.
-s file
True if file exists and has a size greater than zero.
-t fd
True if file descriptor fd is open and refers to a terminal.
-u file
True if file exists and its set-user-id bit is set.
-w file
True if file exists and is writable.
-x file
True if file exists and is executable.
-G file
True if file exists and is owned by the effective group id.
-L file
True if file exists and is a symbolic link.
-N file
True if file exists and has been modified since it was last read.
-O file
True if file exists and is owned by the effective user id.
-S file
True if file exists and is a socket.
Also, what dogbane said.
还有,狗狗说的话。
#1
1
Your condition should be:
你的病情应该是:
if [ -e "$i" ]
not:
if [ -e ${$i} ]
I'm not clear about what you are asking. Are you passing filenames as arguments to the script? If so, you need to loop over the arguments like this:
我不清楚你在问什么。您是否将文件名作为参数传递给脚本?如果是这样,你需要循环遍历这样的参数:
for file in "$@"
do
if [ -e "$file" ]
then
echo "$file exists"
else
echo "$file does not exist"
fi
done
#2
0
From man bash
, section CONDITIONAL EXPRESSIONS
:
从man bash,节有条件的表达:
Conditional expressions are used by the [[ compound
command and the test and [ builtin commands to test
file attributes and perform string and arithmetic
comparisons. [...]
-a file
True if file exists.
-b file
True if file exists and is a block special file.
-c file
True if file exists and is a character special file.
-d file
True if file exists and is a directory.
-e file
True if file exists.
-f file
True if file exists and is a regular file.
-g file
True if file exists and is set-group-id.
-h file
True if file exists and is a symbolic link.
-k file
True if file exists and its ``sticky'' bit is set.
-p file
True if file exists and is a named pipe (FIFO).
-r file
True if file exists and is readable.
-s file
True if file exists and has a size greater than zero.
-t fd
True if file descriptor fd is open and refers to a terminal.
-u file
True if file exists and its set-user-id bit is set.
-w file
True if file exists and is writable.
-x file
True if file exists and is executable.
-G file
True if file exists and is owned by the effective group id.
-L file
True if file exists and is a symbolic link.
-N file
True if file exists and has been modified since it was last read.
-O file
True if file exists and is owned by the effective user id.
-S file
True if file exists and is a socket.
Also, what dogbane said.
还有,狗狗说的话。