命令在终端中工作,而不在脚本中

时间:2015-01-29 10:43:48

标签: linux bash shell

波纹管命令在终端中工作并打印值1

count_XXX=`ll -d /usr/Systems/XXX* 2> /dev/null | grep ^d | wc -l`
echo "$count_XXX"

目录/ usr / Systems中有一个目录和两个软链接,名称为XXX *。

当我在shell脚本中保留相同的两行时。它打印值0

这在unix(终端和脚本)中运行良好,但是当我尝试在linux服务器上运行时,会出现问题(在脚本中)。

我是否需要为Linux更改内容。

提前致谢。

1 个答案:

答案 0 :(得分:2)

使用ll然后grep然后wc对于计算目录来说有点太多了,由于目录名中可能有空格/换行符,这也很容易出错。

在BASH中使用这个简单的片段:

shopt -s nullglob
arr=( /usr/Systems/XXX*/ )
echo ${#arr[@]}
2
    在glob模式结尾处的
  • /确保它只匹配目录。
  • shopt -s nullglob以确保在glob模式与任何内容不匹配时不打印模式