我想检查给定文件是否存在 但是,我不知道如何正确地将条件写入指向其他文件
#!/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
答案 0 :(得分:1)
你的病情应该是:
if [ -e "$i" ]
不
if [ -e ${$i} ]
我不清楚你在问什么。您是否将文件名作为参数传递给脚本?如果是这样,你需要循环遍历这样的参数:
for file in "$@"
do
if [ -e "$file" ]
then
echo "$file exists"
else
echo "$file does not exist"
fi
done
答案 1 :(得分:0)
来自man bash
,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.
另外,狗狗说了什么。