シェルスクリプト:条件が複数ある場合

シェルスクリプト:条件が複数ある場合

3つのディレクトリが存在しない場合は、何かをエコーするシェルスクリプトを作成したいと思います。

これは私が書いたコードです:test.sh:

if [ ! -d "/home/unix/POSTagger2" ] || [! -d "/home/unix/POSTagger2/stanford-parser-full-2015-12-09"] || [! -d "/home/unix/POSTagger2/stanford-corenlp-full-2015-12-09"]; then
echo "Nope"
fi

実行すると、次のエラーが発生します。

./test.sh: line 1: [!: command not found

私の文法に問題があるのでしょうか?

ベストアンサー1

[!以下の空白がいくつかありません。修正されたコードを確認する必要が[ !あります。"]" ]

#!/bin/bash
if 
[ ! -d "/home/unix/POSTagger2" ] || 
[ ! -d "/home/unix/POSTagger2/stanford-parser-full-2015-12-09" ] || 
[ ! -d "/home/unix/POSTagger2/stanford-corenlp-full-2015-12-09" ] 
then
      echo "Nope"
fi

コードの他の方法:

#!/bin/bash
for dir in "/home/unix/POSTagger2" "/home/unix/POSTagger2/stanford-parser-full-2015-12-09" "/home/unix/POSTagger2/stanford-corenlp-full-2015-12-09"; do
     if [ ! -d "$dir" ]; then echo nope ; break; fi 
done  

おすすめ記事