වත්මන් නාමාවලියෙහි අවම වශයෙන් එක් සැඟවුණු ගොනුවක්වත් නොමැති බව ඔබ දන්නේ නම්:
set -- *; echo "$#"
මෙය පැහැදිලිවම ඕනෑම ලෝකයකට සාමාන්යකරණය කළ හැකිය.
ස්ක්රිප්ට් එකක, ස්ථානීය පරාමිතීන් නැවත ලිවීමේ සමහර විට අවාසනාවන්ත අතුරු ආබාධයක් ඇත. ඔබට උපසිරැසියක් භාවිතා කිරීමෙන් හෝ (බෝර්න් / පොසික්ස් අනුවාදය) වැනි ශ්රිතයක් සමඟ වැඩ කළ හැකිය:
count_words () {
eval 'shift; '"$1"'=$#'
}
count_words number_of_files *
echo "There are $number_of_files non-dot files in the current directory"
විකල්ප විසඳුමක් නම් $(ls -d -- * | wc -l)
. ග්ලෝබ් නම් *
, විධානය කෙටි කළ හැකිය $(ls | wc -l)
. ls
සෑම විටම ප්රතිදානය විග්රහ කිරීමෙන් මා නොසන්සුන් වේ, නමුත් මෙහිදී ඔබගේ ගොනු නාමවල නව රේඛා අඩංගු නොවන තාක් කල් එය ක්රියාත්මක විය යුතුය, නැතහොත් ඔබ ls
ඒවායින් ගැලවී යයි. හා $(ls -d -- * 2>/dev/null | wc -l)
ඒ යකා ගැලපෙන නොවන glob සම්බන්ධයෙන් කටයුතු (එනම්, එය ඇති ෙහයින්ද, නැවත එම නඩුව 0 තිබෙන වාසිය set *
ද glob හිස් විය හැකි නම්, ක්රමය මෙය දුෂ්කර පරීක්ෂා අවශ්ය).
ගොනු නාමවල නව රේඛා අක්ෂර අඩංගු විය හැකි නම්, විකල්පයක් භාවිතා කිරීම $(ls -d ./* | grep -c /)
.
ගැලපෙන ලිපිගොනු විශාල ප්රමාණයක් තිබේ නම්, ගෝලීය ලැයිස්තුවක් ව්යාප්ත කිරීම මත යැපෙන ඕනෑම විසඳුමක් තර්ක ලැයිස්තුවක්ls
සමඟ දීර් error දෝෂයක් සමඟ අසමත් විය හැකිය .