2011-09-20 5 views
3

"set"명령을 사용하여 현재 디렉토리의 모든 크기와 파일 이름을 크기순으로 인쇄하는 스크립트를 작성해야합니다."set"명령을 사용하는 간단한 bash 스크립트

#!/bin/bash 

touch /tmp/unsorted 

IFS='@' 
export IFS 

ls -l | tr -s " " "@" | sed '1d' > /tmp/tempLS 

while read line 
do 
    ##set probably goes here## 
    echo $5 $9 >> /tmp/unsorted 
done < /tmp/tempLS 

sort -n /tmp/unsorted 
rm -rf /tmp/unsorted 

논리에 따르면이 스크립트는 작동해야하지만 빈 줄만 생성합니다. 반 친구들과 토론 한 후, 우리는 "set"명령이 while 회 돌이에서 먼저 나와야한다고 생각합니다. 문제는 "설정"명령이하는 일과 사용 방법을 이해할 수 없다는 것입니다. 도와주세요. 고맙습니다.

+0

'$ 5'에서 무엇을 기대 했습니까? 무엇을하려고합니까? –

+0

$ 5는 크기이고 $ 9는 파일 이름입니다. – alf

+0

파일 이름에 공백이 있으면'$ 9'에 완전히 포함되지 않습니다 –

답변

6
ls -l | while read line; do 
    set - $line 
    echo $5 $9 
done | sort -n 

하거나

ls -l | awk '{print $5, $9}' | sort -n 
+0

감사합니다 yi_H,하지만 "set"명령을 사용해야합니다 – alf

+0

@alf : IC. 업데이트를 참조하십시오. –

+0

그것은 작동합니다! 둘 다'set'과'set'을 가지고 있습니다. 당신의 도움을 주셔서 감사합니다! – alf

2

세트 쉘 변수를 조작합니다. 이렇게하면 특정 상황 (예 : 현재 globbing 규칙을 조정)에 맞게 현재 환경을 조정할 수 있습니다.

가끔 스크립트에서 환경을 조정해야 나중에 옵션을 올바르게 설정할 수 있습니다. 스크립트는 서브 쉘에서 실행되므로 사용자가 조정하는 옵션은 스크립트 외부에서 영향을주지 않습니다.

This link에는 사용할 수있는 다양한 명령과 옵션에 대한 방대한 정보가 있습니다.

+0

감사합니다 스펜서, 내가 "설정"을 검색했을 때 나는이 페이지를 읽었습니다. 하지만 내가 조작 할 수있는 변수는 생각할 수 없다. – alf

+0

@alf 변수 목록은 페이지 상단의 구문 링크 아래에 있습니다. 또는 터미널의 bash 맨 페이지에서 더 자세한 정보를 확인할 수 있습니다. –

관련 문제