我正在尝试编写一个脚本来检查Docker中容器中文件的权限,但这使我一直在说“期望二进制运算符”
我尝试添加“测试”(我已经在互联网上看到它了,但是没有用。)
#!/bin/bash
docker exec -i container1 touch /home/ubuntu/tryme
if [ -f -rwx container1:/home/ubuntu/tryme ];
then
echo "Full Permissions";
else
echo "Not every permission. It will be updated"
docker exec -i container1 chmod 777 /home/ubuntu/tryme;
fi
那是脚本的一部分,这让我很头疼
我原本希望它能很好地工作,但是一直说“期望二进制运算符”
答案 0 :(得分:2)
所以:
赞:
filepermissions=$(stat -c '%a' /home/ubuntu/tryme)
if [ "$filepermissions" = "777" ]; then
echo "File permissions are set to 777"
else
echo "They are not set to 777"
fi
[ -f -rwx container1:/home/ubuntu/tryme ]
无效。来自-f
的{{1}}标志检查(来自man test):
test
-f FILE
FILE exists and is a regular file
检查文件-f -rwx
是否存在。然后,第三个参数无效,并且-rwx
或[
期望一个test
。它期望将binary operation
或-o
二进制操作作为第三个参数,其他任何参数都是无效的,没有任何意义。
如果文件位于docker内部,则很容易修改脚本,以在docker容器上下文中获取文件权限:
-a
答案 1 :(得分:-1)
选项$q->where('a', 1);
$q->orWhere('a', 2);
$q->orWhere('a', 3);
用于检查参数是否为文件,因此-f
不是文件。在回显执行chmod之前或之后,从if中删除-rwx
。
如果您的想法是知道它是否是文件并具有所有权限,也许您可以尝试使用此
-rwx
希望这对您有所帮助,如果您愿意,我可以用西班牙语进行解释。
致谢。