디렉토리의 파일 권한과 해당 하위 디렉토리의 내용을 확인 /usr
해야 합니다 /tmp
. 각 및 에 /var
대해 별도로 배열의 디렉터리 및 해당 하위 디렉터리 파일에 대한 파일 권한을 얻었습니다 /usr
./tmp
/var
fun() {
set -A PR_Uperm -- "/usr" `ls -lRt /bin|grep -v "total"|sed -e '1d' -e '/^$/d' -e '/^l/d'|awk '{print $1}'`
set -A PR_Tperm -- "/tmp" `ls -lRt /bin|grep -v "total"|sed -e '1d' -e '/^$/d' -e '/^l/d'|awk '{print $1}'`
fun2
}
마지막으로 스크립트에 동적 범위가 있으므로 이러한 개별 배열이 서로 다른 함수의 단일 배열에 있기를 원합니다. 나는 다음을 시도했습니다 :
fun2(){
set -A perm ${PR_Uperm[@]} ${PR_Tperm[@]}
}
스크립트를 실행하면 이 오류가 발생합니다.
script.sh:79919: 아래 첨자가 범위를 벗어났습니다.
배열만 줄 때파마배열은 다음과 같으며 오류가 발생하지 않습니다.
set -A perm ${PR_Tperm[@]}
저장할 항목이 많습니다.파마대량으로. 배열의 크기를 동적으로 늘리는 방법은 무엇입니까?그룹 ABash와는 관련이 없지만 이러한 동적 증가는 아마도 bash와 ksh에서도 동일하므로 포함하겠습니다.
다음과 같이 임시 파일에 저장해 보았습니다.
printf "/usr\n`ls -lRt /usr|grep -v "total"|sed -e '1d' -e '/^$/d' -e '/^l/d'|awk '{print $1}'`\n" >> /tmp/output2.txt # not working in ksh, but working when I run as bash
ksh: no space
ls -lRt /usr|grep -v "total"|sed -e '1d' -e '/^$/d' -e '/^l/d'|awk '{print $1}' >> /tmp/output2.txt # it is working
첫 번째 명령이 bash에서는 성공적으로 실행되지만 ksh에서는 실행되지 않는 이유는 무엇입니까?
답변1
내가 정확하게 기억한다면 Bash에는 배열 크기에 대한 기본 제한이 없습니다. KornShell93은 최신 버전에서 최대 약 64k(이전 버전에서는 최대 4095)의 인덱스를 지원합니다.
mtree
파일 계층 구조를 사양과 비교하는 유틸리티가 있습니다 . 사양과의 차이(파일이나 디렉터리 누락, 소유권/권한 차이)를 보고하고 선택적으로 수정합니다(가능한 경우).
나는 귀하가 어떤 Unix를 사용하고 있는지 모르기 때문에 이 유틸리티를 찾을 수 있는 위치에 대한 추가 지침을 제공할 수 없습니다. 내부에OpenBSD 기본 시스템, 그러나 분명히 또한리눅스에서 사용 가능.