谁能解释一下这个脚本每一行的作用是什么?我无法运行它,因为我认为语法不正确。
#! /bin/bash v=`echo $@|gawk '{print $NF}'` 如果[-d $v];那么 对于 $@;do 中的 v2 如果测试 $2 != $v;那么 在 $v2 $v/$v2 rm $v2 菲 完毕
答案1
其中大部分是 shell,这是不正确的,因为第一个 if 语句中缺少空格。还
- 第一个 if 语句缺乏平衡
fi
- 应该
$@
被引用"$@"
- 大概
$2
应该是$v2
无论如何,这个-d
测试是可疑的,因为 gawk 应该打印一个数字(不是目录名称)。还是你可以正在测试以数字命名的目录...
正如评论中所建议的,如果您进行了这些更正,脚本将尝试删除与脚本的最后一个参数不同的所有内容,并链接到最终参数指定的目录下的那些已删除文件。 (仅仅使用mv
会更简单)。
这是建议的固定脚本:
#! /bin/bash
v=`echo "$@"|gawk '{print $NF}'`
if [ -d $v ];then
for v2 in "$@";do
if test $v2 != $v;then
ln $v2 $v/$v2
rm $v2
fi
done
fi