私はShellScriptingで新しく、次のようなスクリプトを作成しました。これは単純なものに基づいて作成したものです。パスを引数に渡してカウントファイルに渡したいと思っています。それが正しい動作させるために私の論理的な間違いを見つけることができない、出力を使用すると、ディレクトリ内のファイルの数をカウントしたい場合、私は
sh scriptname.sh /path/to/folder/to/count/files
私はShellScriptingで新しく、次のようなスクリプトを作成しました。これは単純なものに基づいて作成したものです。パスを引数に渡してカウントファイルに渡したいと思っています。それが正しい動作させるために私の論理的な間違いを見つけることができない、出力を使用すると、ディレクトリ内のファイルの数をカウントしたい場合、私は
sh scriptname.sh /path/to/folder/to/count/files
を使用するコードを実行するには、常に「1」
#!/bin/bash
i=0
for file in $0/*
do
let i=$i+1
done
echo $i
です
ls /path/to/folder/to/count/files | wc -l
これは、引数を使用するスクリプトの実例です。個人的には私はそれを使用しますが、大学は私にスクリプトを要求します:( – Fr0stitute
$0
があなたのスクリプトが、おおよそ(いくつかのexceptioの対象に呼び出されたときの名前です、あなたはこのような何かを実行することができますここでは関係のないns)。最初の引数は$1
なので、glob式で使用したいのは$1
です。
#!/bin/bash
i=0
for file in "$1"/*; do
i=$((i + 1)) ## $(()) is POSIX-compliant arithmetic syntax; let is deprecated.
done
echo "$i"
:
#!/bin/bash
shopt -s nullglob # allow globs to expand to an empty list
files=("$1"/*) # put list of files into an array
echo "${#files[@]}" # count the number of items in the array
...あるいは://ウィキ:
#!/bin/sh
set -- "$1"/* # override [email protected] with the list of files matching the glob
if [ -e "$1" ] || [ -L "$1" ]; then # if $1 exists, then it had matches
echo "$#" # ...so emit their number.
else
echo 0 # otherwise, our result is 0.
fi
ありがとうございます!それは完璧に動作し、小さな事を学ぶのに素晴らしいコメントです:) – Fr0stitute
最初の1つでは、ディレクトリが空の場合は-1を返しますが、後者の2つは0を返します(なぜなら、 'nullglob'または' -e'/'-L'のためにテストを使用するからです)。 –
は、httpで 'let'のエントリを参照してください。 .bash-hackers.org/scripting/obsolete –
ありがとう、私はしばらくそれを読む:) – Fr0stitute