我对此有问题。它不断返回我,而不是目录,但肯定是

#!/usr/local/bin/bash  
DIR=$1  
if [ -d "$DIR" ]; then  
        ls -1Apl /home/$DIR | grep -v /\$  
else  
        echo "not a directory"
fi

还有一件事,我需要一点提示。我必须在给定目录中列出给定用户的文件,在该目录中我将用户和目录作为参数同时获得。请提出建议。

有帮助吗?

解决方案

你在 /home 目录运行时?如果没有,您可能需要将其更改为:

if [ -d "/home/$DIR" ]; then

匹配 ls 命令。这是假设您正在使用类似的东西运行 myscript pax 检查 /home/pax 目录,似乎是这种情况。

而且,如果您只想在特定用户拥有的那里列出这些文件,则可以使用 awk 仅打印那些将第3列设置为所需值的人($usrnm), 就像是:

ls -1Apl /home/$DIR | grep -v /\$ | awk -v user=${usrnm} '$3==user{print}{}'

其他提示

您没有测试与尝试列出相同目录的存在 - 也许您是说 -d "/home/$DIR"?还是根据您的要求,您有两个参数吗?

user="$1"
dir="$2"

# and then examine "/home/$user/$dir"
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top