linux - 命令在终端而不是脚本中工作

标签 linux bash shell

以下命令在终端中运行并打印值 1

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

/usr/Systems目录下有一个目录和两个软链接(soft link)同名XXX*。

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

这在 unix(终端和脚本)中工作正常,但是当我尝试在 linux 服务器中运行时,问题发生了(在脚本中)。

我需要为 Linux 改变什么吗?

提前致谢。

最佳答案

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

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

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

关于linux - 命令在终端而不是脚本中工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28212677/

相关文章:

linux - centos samba文件夹共享读取为文件

linux - 在unix中为两个字段添加双引号

linux - 运行 shell 脚本时定义变量?

linux - 如何根据操作系统版本从剪贴板复制/粘贴到 tmux?

bash - 在 shell 脚本中可移植地捕获 ERR

bash - 在 shell 脚本中验证日期格式

Linux shell - 如果文件已被删除,如何查找所有正在运行的进程

linux - 当通过 selenium grid 将 Node Platform 配置为 LINUX 时,OS 在 Selenium Grid Hub 控制台上显示为 Unknown

bash - 使用 xargs 在 bash 中连接 URL

linux - 环境变量中的波浪号扩展