이 스크립트의 각 줄이 무엇을 하는지 설명할 수 있는 사람이 있나요? 구문이 올바르지 않다고 생각해서 실행할 수 없습니다.
#! /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