【发布时间】:2012-06-23 06:23:30
【问题描述】:
使用 bash,如何在没有解释器抱怨的情况下获取文件夹中的文件数量,不包括 shell 脚本中的目录?
在朋友的帮助下,我试过了
$files=$(find ../ -maxdepth 1 -type f | sort -n)
$num=$("ls -l" | "grep ^-" | "wc -l")
从命令行返回:
../1-prefix_blended_fused.jpg: No such file or directory
ls -l : command not found
grep ^-: command not found
wc -l: command not found
分别。这些命令在命令行上工作,但不适用于 bash 脚本。
给定一个包含1-pano.jpg 格式的图像文件的文件,我想抓取目录中的所有图像以获取最大编号的文件以附加到正在处理的下一个图像上。
为什么会出现差异?
【问题讨论】:
-
你的命令周围的引号是什么?
-
另外,在赋值给变量时去掉美元符号;
files=$(find ...)和num=$( ls -l ... ). -
@sarnold,一些脚本教程说在执行块中有空格是一件坏事,使用双引号来降低风险。
-
@Jason - 您在“狂野”中找到的大多数脚本教程都是垃圾并且教坏习惯。 mywiki.wooledge.org/BashGuide
-
@jason:我很想看到对建议
foo=$("ls -l")的指南的参考是一件有用的事情...... :)