2020年7月29日星期三

check file/directory is exists by bash shell

1、$word is empty、true
  if [ -z ${word} ]; then 
    echo "is null"
  fi

2、$word is not empty、true
  if [ -n ${word} ]; then 
    echo "is not null"
  fi

真になる条件
文字列1 = 文字列2文字列1と文字列2が等しいとき
文字列1 != 文字列2文字列1と文字列2が等しくないとき
-z 文字列1文字列1の長さが0のとき
-n 文字列1文字列1の長さが0ではないとき
3、regex pattern check
$LANGにJPが存在するかどうか:
if [[ $LANG =~ [.*JP.*] ]]; then 
   echo "$LANG HAS JP EXIST."
fi
注意: pattern should be in [pattern] or as a parameter
pattern=".*JP.*"
if [[ $LANG =~ $pattern ]]; then 
   echo "$LANG HAS JP EXIST."
fi

-------------------------------------------------
1、ファイル存在
 if [-e ${filepath}]; then 
     echo "${filepath}が存在しています"
   fi 
   #ファイル存在しない
 if [! -e ${filepath}]; then 
     echo "${filepath}が存在しません"
   fi 

2、フォルダ存在
   if [-d ${folderpath}]; then 
     echo "${folderpath}が存在しています"
   fi 
   if [! -d ${folderpath}]; then 
     echo "${folderpath}が存在しません"
   fi 
3、ファイルであるか、フォルダであるか
   if [-f ${path}]; then 
     echo "${path}はファイルです"
   else 
     echo "${path}はフォルダです"
   fi 
4、フォルダ下に特定拡張子のファイルを存在しているか
   if  ls ${path}/*.txt >/dev/null 2>&1
   then
      echo "exist"
   fi
  一行内に各場合:
 if ls ${path}/*.txt >/dev/null 2>&1; then echo "exist"; fi

 ファイルやディレクトリの存在を確認する際に使用できる演算子
演算子説明
-a ファイルファイルがあれば真
-b ファイルファイルがありブロックス特殊ファイルであれば真
-c ファイルファイルがありキャラクター特殊ファイルであれば真
-d ファイルファイルがありディレクトリであれば真
-e ファイルファイルがあれば真
-f ファイルファイルがあり通常のファイルであれば真
-g ファイルファイルがありSGID(特殊なアクセス権)であれば真
-G ファイルファイルがあり実行グループIDによる所有者であれば真
-h ファイルファイルがありシンボリックであれば真(-Lと同じ)
-k ファイルファイルがありステッキービットが設定されていれば真
-L ファイルファイルがありシンボリックであれば真(-hと同じ)
-O ファイルファイルがあり実行ユーザIDによる所有者であれば真
-p ファイルファイルがあり名前付きパイプ(named pipe)であれば真
-r ファイルファイルがあり読み取り可能であれば真
-s ファイルファイルがありサイズが0より大きければ真
-S ファイルファイルがありソケットであれば真
-t FDFD(ファイルディスクリプタ)が端末でオープンされていれば真
-u ファイルファイルがありSUID(特殊なアクセス権)であれば真
-w ファイルファイルがあり書き込み可能であれば真
-x ファイルファイルがあり実行可能であれば真
reference:
https://shellscript.sunone.me/if_and_test.html

没有评论: