我一直在尝试编写一个脚本,该脚本将在目录中搜索多个压缩的tar文件,解压缩它们,然后解压缩它们。但是我的问题是,每次我运行脚本时,它将执行第一个if语句,但不会执行第二个。我已经在单独的脚本中运行了这两个语句,并且它们都独立工作,但是在同一脚本中运行时却没有。我是否需要将它们合并在if then elseif语句中?这是我到目前为止所拥有的,感谢您的帮助。
#!/bin/csh
set x = (`find /Documents/*.gz -print`)
set v = (`find /Documents/*.tar -print`)
if ("$x" != "")
then
gunzip *
else
echo "No zip files found."
endif
if ("$v" != "") then
foreach i ( $v )
tar -xvf $i
end
else
echo "No tar files found."
endif
您仅需find
即可执行相同操作;您实际上不需要循环:
find /Documents/*.gz -exec gunzip {} \;
find /Documents/*.tar -exec tar xvf {} \;
[-exec
将在找到的每个文件上运行命令,{}
被文件名替换,\;
终止命令。