2017-09-19 10 views
0

シェル環境内にパスが存在するかどうかを調べたいときは、対話型でもスクリプトでも、私は [ -L "${PATH_TO_CHECK}" ] || ([ ! -L "${PATH_TO_CHECK}" ] && [ -e "${PATH_TO_CHECK}" ]を使用します。壊れているシンボリックリンクは、まだ私への既存の道です。私はその逆を調べる方法を見つけようとしていますが、! ([ -L "${PATH_TO_CHECK}" ] || ([ ! -L "${PATH_TO_CHECK}" ] && [ -e "${PATH_TO_CHECK}" ])より単純なものを見つけることはできません。その小切手は還元できないのでしょうか?シェルスクリプト内にパスが存在しないかどうかを確認する簡略化

答えて

1

答え:

!(a || (!a && b))  
!a && !(!a && b)  # De Morgan's law 
!a && (a || !b)   # De Morgan's law again 
(!a && a) || (!a && !b) # Distributive law 
!a && !b    # Complement law 

(ボーナス:もう一度、元の式がa || bに簡素化することができることを見つけるために、ド・モルガンの適用)

答え:

ちょうどそれがないことを確認してください既存のファイルであり、リンクでもありません:

[ ! -e "$path" ] && [ ! -L "$path" ] 
関連する問題