알 수 없는 파일 이름의 데이터를 배열로 읽어들이나요? [폐쇄]

알 수 없는 파일 이름의 데이터를 배열로 읽어들이나요? [폐쇄]

질문:

파일 이름: Celebs 파일 내:

Beyonce
Brittney
Kevin
George

read및 명령을 사용하여 코드를 작성해야 합니다 while. 이것이 내가 지금까지 갖고 있는 것이지만 내 쉘 스크립트에서는 실행되지 않기 때문에 잘못된 것 같습니다.

Names또한 파일 이름이 항상 작동하는 것은 아니며 코드에 임의의 파일을 넣는 방법을 모른다는 말을 들었습니다 . 또한 알 수 없는 파일 이름과 파일 안에 있는 사람의 이름으로 배열을 만들고 터미널에서 인쇄해야 했습니다.

그래서 나도 인쇄해야 해요.

    list= find -name "Celebs" -type f #if its an unknown file name this method won't work
    start=0 #position of the empty array
    declare -a People
    while read -r line
      do
   People[$start]=$line #lines read to be stored in the array
    ((start++))
  done<$list

답변1

가정:

  1. 이것은 bash스크립트입니다.
  2. 표준 입력에서 데이터를 읽습니다.
  3. 입력의 각 줄은 배열에 저장되고 모든 입력을 읽은 후에 표시됩니다.

표준 입력에서 데이터를 얻으면 데이터가 원래 어디에 저장되어 있는지 알 수 없는 문제가 해결됩니다. 이를 통해 스크립트 사용자는 명령에서 데이터를 자유롭게 입력하거나 파일에서 입력을 리디렉션할 수 있습니다.

해결책:

#!/bin/bash

# 'names' is an array, empty from the start
declare -a names=()

while read name; do
    # Append the name to the end of the array
    names+=( "$name" )
done

# Output all names with each being prepended by "Name: "
printf 'Name: %s\n' "${names[@]}"

이름을 읽는 중이므로 선택합니다.아니요-r와 함께 스위치를 사용하십시오 read. 제가 아는 한, 백슬래시가 포함된 이름은 없습니다...

연산자를 사용하여 배열에 값을 추가할 수 있습니다 +=.

printf입력을 "루프"하고 배열의 각 요소에 형식을 적용하므로 출력을 수행하는 데 루프가 필요하지 않습니다 . 1 .

질문의 데이터를 사용하여 테스트해 보세요.

bash-4.4$ bash script <testdata
Name: Beyonce
Name: Brittney
Name: Kevin
Name: George

1은 printf배열에 대해 모르지만 가져온 각 입력 줄을 사용하고 형식 지정 문자열에 따라 형식을 지정합니다. 변수 확장으로 ${names[@]}인해 여러 줄의 입력이 발생합니다 printf.

관련 정보