Reputation: 67
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
Upvotes: 1
Views: 95
Reputation: 274878
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
Upvotes: 1
Reputation: 70391
From man bash
, section CONDITIONAL EXPRESSIONS
:
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.
Upvotes: 0