2013-03-20 1 views
2

다음 코드는 필자가 작성한 스크립트의 일부입니다. 이제이 스크립트의 목적 상 ./src에 파일이 하나만 있다고 가정하므로이 루프는 한 번만 실행해야합니다. 이제 어딘가에있는 루프에서 $ f (파일 이름)의 처음 4 문자를 가져 와서 다른 변수에 저장하려고합니다. 커팅 명령이 있다는 것을 알고 있지만 파일 자체가 아닌 파일의 내용에 커트가 사용되었다고 생각하기 때문에이 파일을 여기에 사용할지 여부를 잘 모르겠습니다.파일 이름의 처음 4 문자를 변수에 저장

for f in `ls ./src` 
do 
    echo $f 
    cd tmp 
    f="../src/$f" 
    sh "$f" 
done 
+0

답장을 보내 주셔서 감사합니다. – zyxxwyz

답변

5

${string:position} 추출물 문자열 $ 위치에서 $ 문자열에서 하위 문자열 추출

http://tldp.org/LDP/abs/html/string-manipulation.html에서.

$ string 매개 변수가 "*"또는 "@"이면 $ position에서 시작하는 위치 매개 변수 [1]을 추출합니다.

$ 위치의 $ string에서 부분 문자열의 $ 길이 문자를 추출합니다.

shortName=${f:0:4} 

재밌게에게!

4

당신은 순수 bash는 방법을 사용할 수 있습니다

${parameter:offset:length} 

$HOME 변수의 첫번째 문자를 얻을 :

echo ${HOME:0:4} 

은 BTW 스크립트는 결함 (LS 출력을 구문 분석하지 않음). 그것은 다음과 같이해야합니다 :

for f in ./src/* 
do 
    echo $f 
    cd tmp 
    f="../src/$f" 
    first4=${f:0:4} 
    sh "$f" 
done 
+0

어떤 이유로 "잘못된 대체"오류가 발생합니다. 그 이유가 뭔지 아십니까? – zyxxwyz

+0

Pls 귀하의 질문에 귀하의 최신 스크립트를 게시하고 디버깅 할 수 있습니다. – anubhava

+0

실제로 나는 단지 그것을 봤다. 그리고 내가 bash를 사용해야했을 때 sh를 사용했기 때문에 그렇게 보인다. 그래도 도와 ​​줘서 고마워! – zyxxwyz

관련 문제