如何使用 bash 通过 if 语句捕获两个变量的返回?
我的任务是在 Mac 上列出 /Users 中的用户文件夹。我必须允许重复文件夹(拥有 650 个 mac 客户端的大型企业)或桌面分析师备份文件夹并附加某些内容的情况。我的 $fourFour
变量选择了它。但是,我必须将其标记为日志记录。
这就是我在下面得到的地方。变量 $fourFour
可能会返回一个或多个文件夹,我需要获取 if 语句来相应地回显这一点。
folders=$(ls -d */ | grep $fourFour | awk '{print $(NF)}' | sed 's/\///')
echo folders is $folders
if [[ "$folders" == "" ]]; then
echo no items
else
echo one or more items
fi
My task is to list a user's folder in /Users on a mac. I have to allow for dupe folders (large enterprise of 650 mac clients) or where a desktop analyst has backed up a folder and appended something. My $fourFour
variable picks that up. However, I must flag that for logging.
This is where I have got below. The variable $fourFour
may return one or more folders and I need to get the if statement to echo this accordingly.
folders=$(ls -d */ | grep $fourFour | awk '{print $(NF)}' | sed 's/\///')
echo folders is $folders
if [[ "$folders" == "" ]]; then
echo no items
else
echo one or more items
fi
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
除非绝对必要,否则不要解析
ls
的输出。您上面的代码在文件夹名称中存在空格主要问题。Bash 数组可以成为你的朋友:
<前><代码>#!/bin/bash
shopt -s nullglob
文件夹=(*$fourFour*/)
# 删除尾部斜杠
文件夹=("${文件夹[@]%/}")
如果 [[ "${#folders[@]}" -gt 0 ]];然后
echo“文件夹:”“${文件夹[@]}”
别的
echo“没有文件夹”
菲
Do not parse the output of
ls
unless you absolutely have to. Your code above has major issues with whitespace in folder names.Bash arrays can be your friend:
您不必调用这么多工具来查找文件夹。 只需使用 shell (bash)
如果您只想检查是否有与您的模式匹配的文件夹,
you don't have to call so many tools to find your folders. Just use the shell (bash)
if you just want to check whether there are any folders that matched your pattern