2017-05-16 13 views
0

쉘에서 파일 배열을 만드는 방법. 그냥쉘에서 파일 배열을 만들려면 어떻게해야하고 어떻게 다른 파일과 비교할 수 있습니까?

files = (file1.txt file2.txt file3.txt) 

아니면 내가 그렇게 할 것입니다 방법,

files = ("file1.txt" "file2.txt" "file3.txt) 

나중에 내가이 배열을 참조하고 읽을 수있는 특정 파일을 선택하고자하는 프로그램의 경우, 그것을이다. 나는 그 파일을 읽고 그것을 출력 파일과 비교할 조건이 있기를 원하기 때문에 묻는다.

난 그냥 할 것인가 :

if grep -q ${outputs[i]} output; then 
    #etc. 

하지만 대신 다음 어떻게해야 (나는이 작업을 수행 할 수있어)?

답변

3

할당 할 때 = 사이에 공백이 없으면 배열은 예외가 아닙니다.

files=(file1.txt "file2.txt") 

파일 이름에 특수 문자가 포함되어있는 경우 파일 이름 주위에 인용 부호가 필요합니다. 당신이 정규 표현식으로 $ 파일을 사용 하시겠습니까

for file in "${array[@]}" ; do 
    if grep -q "$file" output ; then 

위치 : 등 공백, 괄호,

당신은 배열을 걷는 for 루프를 사용할 수 있습니까? 그런 다음 점, 캐럿, 달러 기호 등 특수 문자를 특별히 처리해야합니다.

두 파일의 내용을 비교하려면 grep이 아니라 diff을 사용하십시오.

if diff -q "$file" output > /dev/null ; then 
    echo Same 
else 
    echo Different 
fi 
+0

diff를 구현하는 방법을 보여 주시겠습니까? – segfault

+0

@fwubb : 업데이트를 확인하십시오. – choroba