bash 脚本设置父文件夹权限也有问题
Issue with bash script setting parent folder permissions also
我有一个 bash 脚本,它接收 file/folder 的参数、编号的权限、用户和组。
它确定路径变量是文件还是文件夹,并相应地设置权限。
问题是当我传入文件夹时,它将 和 文件夹本身中的文件设置为新用户和组。
如何只设置循环中的文件 而不是文件夹
#!/bin/bash
path=
ocatal=
user=
group=
GREEN='3[0;32m'
RED='3[0;31m'
if [ -gt 766 ]
then
tput setaf 1
echo -e "${RED}777 is not allowed!!! :-("
tput sgr0
exit 1
else
if [ -f "$path" ]
then
chmod
chown ${3:=$(/usr/bin/id -run)}:
tput setaf 2
echo Permission set to
echo User set to
echo Group set to
echo `ls -l `
else
for f in $path/*
do
chmod $f
chown ${3:=$(/usr/bin/id -run)}: $f
tput setaf 2
echo Permission set to
echo User set to
echo Group set to
done
echo `ls -l `
fi
exit 0
fi
The issue is when I pass in a folder, it sets the files within and the
folder itself to the new user and group.
发生这种情况是因为这种模式 $path/*
也扩展到 $path/ 并且这导致文件夹权限发生变化。 *
表示任何文件(符号)或什么都没有,因此 $path 也在列表中。
更新,我在这里不太正确,看起来这个问题只有在给定文件夹为空时才会发生,这里是带有空目录的测试回显
$ echo testdir/*
testdir/*
还有文件
$ echo testdir/*
testdir/file testdir/file2
考虑一下
[[ -d "$path" ]] && {
cd "$path"
chmod -f $ocatal *
chown -f $user:$group *
...
cd - # back to previous folder
}
-f
在空文件夹的情况下抑制错误消息
并将此代码 DEF='\e[0m'
添加到您的颜色中以设置默认颜色。
echo -e "${RED}777 is not allowed!!! :-($DEF"
我有一个 bash 脚本,它接收 file/folder 的参数、编号的权限、用户和组。
它确定路径变量是文件还是文件夹,并相应地设置权限。
问题是当我传入文件夹时,它将 和 文件夹本身中的文件设置为新用户和组。
如何只设置循环中的文件 而不是文件夹
#!/bin/bash
path=
ocatal=
user=
group=
GREEN='3[0;32m'
RED='3[0;31m'
if [ -gt 766 ]
then
tput setaf 1
echo -e "${RED}777 is not allowed!!! :-("
tput sgr0
exit 1
else
if [ -f "$path" ]
then
chmod
chown ${3:=$(/usr/bin/id -run)}:
tput setaf 2
echo Permission set to
echo User set to
echo Group set to
echo `ls -l `
else
for f in $path/*
do
chmod $f
chown ${3:=$(/usr/bin/id -run)}: $f
tput setaf 2
echo Permission set to
echo User set to
echo Group set to
done
echo `ls -l `
fi
exit 0
fi
The issue is when I pass in a folder, it sets the files within and the folder itself to the new user and group.
发生这种情况是因为这种模式 $path/*
也扩展到 $path/ 并且这导致文件夹权限发生变化。 *
表示任何文件(符号)或什么都没有,因此 $path 也在列表中。
更新,我在这里不太正确,看起来这个问题只有在给定文件夹为空时才会发生,这里是带有空目录的测试回显
$ echo testdir/*
testdir/*
还有文件
$ echo testdir/*
testdir/file testdir/file2
考虑一下
[[ -d "$path" ]] && {
cd "$path"
chmod -f $ocatal *
chown -f $user:$group *
...
cd - # back to previous folder
}
-f
在空文件夹的情况下抑制错误消息
并将此代码 DEF='\e[0m'
添加到您的颜色中以设置默认颜色。
echo -e "${RED}777 is not allowed!!! :-($DEF"