Bash脚本 - 检查参数 - for的文件

时间:2013-11-29 10:49:55

标签: linux bash

我想检查给定文件是否存在 但是,我不知道如何正确地将条件写入指向其他文件

#!/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 个答案:

答案 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 bashCONDITIONAL 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.

另外,狗狗说了什么。