perl中的系统命令

f-z*_*z-N 1 bash perl

我需要运行一个系统命令,该命令将转到目录并删除不包含文件的子目录(如果存在).我编写了以下命令来执行此操作:

system("cd /home/faizan/test/cache ; for i in *\; do if [ -d \"$i\" ]\; then echo \$i fi done");
Run Code Online (Sandbox Code Playgroud)

上面的命令不断引发语法错误.我尝试了多种组合,但仍然不清楚这应该如何.请建议.

tri*_*eee 6

好吧,您的命令行确实包含语法错误.试试这个:

system("cd /home/faizan/test/cache ; for i in *; do if [ -d \"\$i\" ]; then echo \$i; fi; done");
Run Code Online (Sandbox Code Playgroud)

或者更好的是,首先只覆盖目录;

system("for i in /home/faizan/test/cache/*/.; do echo \$i; done");
Run Code Online (Sandbox Code Playgroud)

或者更好的是,没有循环:

system("echo /home/faizan/test/cache/*/.");
Run Code Online (Sandbox Code Playgroud)

(我想你会想要rmdir而不是echo一次正确调试.)

或者更好的是,在Perl中完成所有工作.这里没有什么需要system().