나는 Unix/Linux 셸 스크립트 초보자이며 아래 줄이 포함 된 스크립트를 살펴야합니다. 이 질문의 다음 세부 사항은 모호하지만이 코드를 작성한 사람은 문서를 남기지 않으므로 그 내용을 모면했다. 아무도 그들이 실제로하는 것을 조언 할 수 있습니까?유닉스/리눅스의 이러한 기능은 무엇을합니까?
두 가지 특정 코드가 있습니다. 다양한 매개 변수를 대표하는
failure="020o 040a"
success="002[a-d] 003[a-r] 004[a-s] 005[a-u]
, 내 생각, 쉘 스크립트가 수행하는 계산 함께 할 수있는 : 첫 번째는 단순히 polys.sh
는 내용으로 텍스트 파일입니다 라인 source polys.sh
이다. 계산의 본질은 스크립트의 실행을 목표로하기 때문에 중요하지 않습니다.
두 번째 코드는 아래와 같으며 관련 줄은 Start
및 Stop
개의 주석으로 구분됩니다. 내가 말할 수있는 것 : $arg1
이 비어 있습니다. $opt1
도 공백입니다. $poly
은 텍스트 파일의 경로와 이름이고 나는 ./search
입니다. 나는 폴더라고 생각합니다.
if [ $search == "yes" ]
then
# Search stage for squares containing zeros
#
# Start.
output="$outputs/search/"`basename $poly`
./search $opt1 $arg1 < $poly 2>&1 | tee $output
if tail -n1 $output | grep -v "success"
# End.
then
echo "SEARCH FAILURE" >> $output
continue
fi
# Save approximations
#
echo -n "SEARCH SUCCESS " >> $output
cat /tmp/iters >> $output
cp /tmp/zeros $inputs/search/`basename $poly`
else
echo "No search"
fi
를 포함 그들의 의도는 명백합니다 (앞서 말한 버그는 그렇지 않을 수도 있음). –
http://shellcheck.net에서 보여주는 모든 버그를 수정하고 남은 것만에 초점을 맞춘 질문을하고 이미 이해하고있는 모든 것을 제거하십시오. –
(http://shellcheck.net/에서도 찾을 수없는 문제가 있으며, POSIX 사양에서'[] '에 대해서만''='이 유효하다는 보장을하지 않는다고 불평하지 않습니다. ='문자열 비교 연산자로서, 에코에 대한 POSIX 스펙에 명시 적으로 정의되지 않은 동작 인'echo -n'을 설명하지 않고 명시 적 형식 문자열을 기본 대체로 사용하는'printf'와 함께하지만, 않습니다 * 식별 시작하는 것이 좋습니다). –