このスクリプトの各行が何をしているかを説明できる人はいますか?構文が正しくないと思って実行できません。
#! /bin/bash v=`echo $@|gawk '{print $NF}'` if [-d $v]; $ @のv2の場合; do $2 != $v; をテストすると $v2 から $v/$v2 RM $v2 フィリピン諸島 完璧
答え1
ほとんどはシェルで、最初の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