ksh: for 루프는 특정 디렉터리의 파일을 반복합니다.

ksh: for 루프는 특정 디렉터리의 파일을 반복합니다.
schema_dir=schema_app
for SCHEMA_CHANGE in $schema_dir/*
do

따라서 내 pwd 에는 하위 디렉터리 ( 등) /A/B/C/scripts 가 있습니다 . 처음에 스크립트에 전달한 매개변수에 따라 각 디렉터리의 파일을 반복하는 for 루프를 원합니다.schema_appschema_data

내가 여기서 무슨 실수를 했나요? 왜냐하면 (파일명)을 에코하면 SCHEMA_CHANGE아래와 같이 표시되기 때문입니다 schema_app/filename. 어떻게 여기까지만 갈 수 있나요 filename?

답변1

당신은 아무 잘못도 하지 않았습니다. schema_app/filename파일의 올바른 경로입니다. 파일을 처리하기 위해 명령(또는 리디렉션)에 전달해야 하는 내용입니다. 자체적으로는 작동하지 않습니다 filename. 명령은 파일이 어느 디렉터리에 있는지 어떻게 알 수 있나요?

어떤 이유로 디렉토리 부분 없이 파일 이름이 필요한 경우 다음을 사용할 수 있습니다.

"${SCHEMA_CHANGE##*/}"

이는 변수의 값을 가져와 SCHEMA_CHANGE마지막 부분까지 제거 하므로 /(또는 값이 없으면 값을 변경하지 않고 그대로 두므로 /) 디렉토리 부분 없이 파일 이름을 얻게 됩니다.

관련 정보