ファイルが存在するかどうかは、以下のスクリプトで確認しています。
#!/bin/bash
FILE=$1
if [ -f $FILE ]; then
echo "File $FILE exists."
else
echo "File $FILE does not exist."
fi
ファイルが存在しないかどうかを確認したいだけの場合、どのような構文が正しいのでしょうか?
#!/bin/bash
FILE=$1
if [ $FILE does not exist ]; then
echo "File $FILE does not exist."
fi
test]1コマンド([
ここ])には、感嘆符である「not」論理演算子があります(他の多くの言語と似ています)。これを試してみてください。
if [ ! -f /tmp/foo.txt ]; then
echo "File not found!"
fi
[[ -f $FILE ]] || printf '%s does not exist!\n' "$FILE"
また、そのファイルが壊れたシンボリックリンクである可能性や、ソケット、デバイス、fifoなどの非正規のファイルである可能性もあります。たとえば、壊れたシンボリックリンクのチェックを追加するには、次のようにします。
if [[ ! -f $FILE ]]; then
if [[ -L $FILE ]]; then
printf '%s is a broken symlink!\n' "$FILE"
else
printf '%s does not exist!\n' "$FILE"
fi
fi