스크립트를 실행하기 위한 조건으로 if 문을 사용하는 데 문제가 있습니다.
첨부된 데이터가 있는 승인된 파일 목록과 비교하여 디렉터리의 모든 파일을 확인하는 for 루프가 있습니다.
for ( y in `ls directory` )
do
if [[ y =~ $(awk -F',' '{ print $1 }) ]]
then
ydata=grep $y file
sh $ydata
fi
done
for 루프는 디렉토리의 각 파일을 실행하는 것이며 정상적으로 작동합니다.
if는 주어진 파일이 목록에 있는지 확인합니다. y 결과 중 극히 일부만 승인되어 스크립트에서 사용될 것으로 예상하기 때문에 실패할 수 있는 조건이 필요합니다. [[이건 나한테는 안 맞는다]]
마지막으로, 스크립트를 실행하기 위해 전체 줄을 매개변수로 요구하는 파일(예: 파일 이름, 날짜, 위험, 수준)에서 전체 줄을 추출하는 grep이 있습니다. 하지만 파일이 목록에 없으면 스크립트를 실행하고 싶지 않으며, 가능하다면 디렉터리의 모든 항목을 grep하고 싶지도 않습니다.
어떤 아이디어가 있나요?
답변1
@Gray_M 귀하에게 필요한 것이 무엇인지 잘 모르겠습니다. 질문에 더 자세한 내용을 제공하거나 처리할 데이터 샘플을 게시할 수도 있습니다.
내가 이해하지 못하는 것은 다음과 같습니다.
- 데이터가 포함된 승인된 문서 목록(첨부파일? 설명해주세요)
- 디렉터리의 모든 파일을 실행합니다.(파일이 스크립트라는 뜻인가요?) 아니면 각 파일을 처리한다는 뜻인가요?
- 결과 중 극히 일부만이 승인되어 스크립트에 사용될 것으로 예상합니다.(어떤 스크립트에서 사용됩니까?) 새로운 스크립트인가요? 스크립트를 실행하시겠습니까? 호출 스크립트? 호출 스크립트는 어떻게 생성되나요? 데이터가 스크립트인가요? 데이터와 예시를 게시할 수 있나요?
$(awk -F',' '{ $1 인쇄 })완전히 틀렸습니다. 누락된 따옴표 외에도 데이터가 수신되지 않았습니다. 이는 awk가 처리할 것이 없음을 의미합니다.
어쨌든 먼저 아래의 간단한 스크립트가 도움이 될 수 있습니다.
#!/bin/bash
scripts_folder="scripts_to_check_folder"
conditions_file="conditions_file"
for file in $(ls "$scripts_folder"); do
if grep -F "$file" $conditions_file; then
sh "$scripts_folder/$file"
else
echo "Will not execute this script: $file"
fi
done
루프는 내용에 따라 일부 스크립트를 실행하거나 실행하지 않습니다.조건 파일기본적으로 스크립트 이름이 포함됩니다.
추가 지원을 드릴 수 있도록 자세한 내용을 다시 제공해 주시기 바랍니다.
답변2
귀하의 질문(제가 주의 깊게 읽으면)은 if 문에 관한 것입니다. 조건은 흥미로운 내용을 제공하지 않을 것입니다. 먼저 "y"는 "&y"여야 합니다.