以下是问题所在:
使用bash for循环,循环遍历当前目录中具有字符串"osl-guest“和".tar.gz”的文件(使用‘ls’命令,参见下面的示例输出),并且仅当文件未设置为可执行文件时,才对每个文件单独运行命令‘tar-zxf’。例如,要对文件‘file1’运行‘tar-zxf’命令,命令应该是:tar -zxf file1
"ls -l“的输出示例:
-rw-r--r-- 1 lance lance 42866 Nov 1 2011 vmlinuz-2.6.35-gentoo-r9-osl-guest_i686.tar.gz
-rwxr-xr-x 1 lance lance 42866 Nov 1 2011 vmlinuz-3.4.5-gentoo-r3-osl-guest_i686.tar.gz
-rw-r--r-- 1 lance lance 42866 Nov 1 2011 vmlinuz-3.5.3-gentoo-r2-osl-guest_i686.tar.gz发布于 2013-01-31 01:20:02
您可以通过以下方式执行循环,而无需调用ls
# For each file matching the pattern
for f in *osl-guest*.tar.gz; do
# If the file is not executable
if [[ ! -x "$f" ]]; then
tar -zxf $f;
fi;
done;*osl-guest*.tar.gz只是使用外壳扩展来获得所需的文件列表,而不是将其称为ls。
if语句检查文件是否可执行,-x是对可执行文件的测试,使用!会使结果无效,因此它只会在文件不可执行时进入if块。
https://stackoverflow.com/questions/14609260
复制相似问题