【发布时间】:2016-02-03 18:49:49
【问题描述】:
我编写了一个脚本来根据读入的输入列表更改文件所有权。我的脚本在名称中没有空格的目录上运行良好。但是,它无法更改名称中带有空格的目录上的文件。我还想将 chown 命令的输出捕获到文件中。有人可以帮忙吗?
这是我在 ksh 中的脚本:
#!/usr/bin/ksh
newowner=eg27395
dirname=/home/sas/sastest/
logfile=chowner.log
date > $dir$logfile
command="chown $newowner:$newowner"
for fname in list
do
in="$dirname/$fname"
if [[ -e $in ]]
then
while read line
do
tmp=$(print "$line"|awk '{if (substr($2,1,1) == "/" ) print $2; if (substr($0,1,1) == "/" ) print '})
if [[ -e $tmp ]]
then
eval $command \"$tmp\"
fi
done < $in
else
echo "input file $fname is not present. Check file location in the script."
fi
done
【问题讨论】:
-
我打赌你根本不需要 awk:“列表”文件中有什么?
-
列表文件和其他几个可以添加到 for 循环的输入文件包含用户留下的文件的报告。我从这些文件中删除文件名,然后尝试更改当前用户对它们的所有权,以便可以管理磁盘。
-
但是您的 awk 命令表明每行有 2 个字段。那个文件里有什么?这可能是您问题的根源
-
我没有问题剥离文件。以下是输入文件的示例: 1) 文件名:driver2.ZIP 大小(兆字节):254 位置:/sasdev/dropzone/dm_etl/HB/IRS/2014/AugME/driver2.ZIP /sasdev/dropzone/dm_etl/HB/ IRS/2014/DecME/driver2.ZIP /sasdev/dropzone/dm_etl/HB/IRS/2014/NovME/driver2.ZIP 创建于:2014 年 9 月 3 日
-
请更新您的问题。你不能用多行格式化评论