2017-10-21 2 views
1

이 간단한 스크립트를 실행하려고합니다. 디렉토리에서 일련의 파일을 반복하고 'cut'을 사용하여 변수를 만들고 싶습니다. 파일. 권한 거부 오류가 발생하여 그 이유를 알 수 없습니다. 아래는 내 스크립트입니다.루프에서 변수 만들기 linux - 권한이 거부되었습니다.

FILES=./data/* 

for f in $FILES 
do 
    NEWNAME=$($f|cut -c3-12) 
    echo $NEWNAME 
done 

궁극적 인 목표는 mkdir /path/to/new/directory/$NEWNAME으로, 다운 스트림 처리를 위해 파일 당 하나의 디렉토리를 만드는 것입니다.

+0

소유자이고 무엇을/데이터/*''에있는 파일에 대한 사용 권한.? – alfasin

답변

3

$(stuff)은 명령으로 stuff을 실행하고 출력을 명령 행으로 대체합니다. 이 명령으로 $f을 실행하려고

$($f|cut -c3-12) 

cut에 파이프 출력 : 그래서 당신이 할 때. $f의 파일에 실행 권한이 없기 때문에 오류가 발생합니다. 당신이 변수 $f의 내용을 잘라하려는 경우

, 당신은 그것을 반향해야합니다,

NEWNAME=$(echo "$f" | cut -c3-12) 

을하지만 이것에 대한 cut를 사용할 필요가 없습니다 bash 내장 된 매개 변수 확장 연산자를 가지고 문자열 선택 :

NEWNAME=${f:2:10} 
+0

감사! 그것은 효과적이었고, 구문의 사용법을보다 명확하게 보여줍니다. – CAsimonet

관련 문제