少し離れて
@devnull がすでに質問に答えているので、どこにエラーがあるかを指摘しています。
もう少しアイデア:
この種のブラウジングを行うために、まさに探しているものを再帰的に見つけることができる非常に強力なコマンドがあります。find
Var2=`find /stud_data/Input_Data/test3 -name '*.txt' | wc -l`
これを再帰的にしない場合:
Var2=`find /stud_data/Input_Data/test3 -maxdepth 1 -name '*.txt' | wc -l`
ファイルのみが必要な場合(シンボリックリンクもディレクトリも必要ないことを意味します)
Var2=`find /stud_data/Input_Data/test3 -maxdepth 1 -type f -name '*.txt' | wc -l`
などなど... man ページをお読みください: man find
.
あなたの質問はbashを表しているので、これをより速くするために使用できるいくつかのバシズムがあります:
#!/bin/bash
Var1=22
VarLs=(/stud_data/Input_Data/test3/*.txt)
[ -e $VarLs ] && Var2=${#VarLs[@]} || Var2=0
Var3=$(( Var1 + Var2 ))
echo $Var3
# Uncomment next line to see more about current environment
# set | grep ^Var
bash 展開は/path/*.txt
、jocker フォームに一致するすべてのファイル名を含む配列に変換されます。
フォームに一致するファイルがない場合VarLs
は、ジョッカー フォーム自身のみが含まれます。
したがって、テスト-e
はこれを修正します。返されたリストの最初のファイルが存在する場合は、リスト内の要素の数 ( ${#VarLs[@]}
) をVar2
割り当て0
ますVar2
。