【发布时间】:2017-01-25 17:21:28
【问题描述】:
我正在上一门让我们用 bash 编写脚本的课程,而且我对 bash 很陌生。
我的教授给了我们一个作业: “编写一个 Bash 脚本 count.sh,它为 /bin 下以每个字母开头的命令构建一个计数表。例如,如果有 3 个以“a”开头的命令(alsaumute、arch & awk)而可能是 2 个以“z”开头的命令(zcat 和 zsh)。您的脚本将打印的第一行和最后一行是: 一个 3 ... z 2"
所以我一直在解决这个问题并且我能够设置循环,但我不清楚我应该如何检索 bin 命令(我假设 bin 是一个文件只是 bash 的命令列表?)然后对第一个字符执行字符检查?
他告诉我使用 ls 和 grep 作为提示。我查找了 ls(列出文件/目录)并 grep 搜索特定文本,所以我假设我使用 ls 以某种方式获取 bin 命令,然后在循环中对它们执行 grep?
declare -a letters=('a' 'b' 'c' 'd' 'e' 'f' 'g' 'h' 'i' 'j' 'k' 'l' 'm' 'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y' 'z')
counter=0
while [ $counter -lt 26 ]; do
current=${letters[$counter]}
echo The counter is $counter
echo $current
let counter=counter+1
done
这就是我到目前为止的位置,所以我的猜测是我创建了一个变量数组来保存所有 bin 命令(使用 ls 对吗?),然后在循环中使用 grep?
我只是想得到一些建议,说明我走在正确的道路上。我对 linux 很陌生,从来没有处理过脚本或 cmd 行类型的东西。
【问题讨论】:
-
‘我假设 bin 是一个仅包含 bash 命令列表的文件?’ 你知道当你假设时他们会说什么吗?这种假设是非常错误的。
-
试试
ls -l /bin/ -
@sherrellbc Or don't
-
你的教授给了你不好的建议。不推荐使用
ls和grep;见Why you shouldn't parse the output of ls(1)。 -
@Biffen,“试试
ls -l /bin/”看看/bin/是什么意思。