문자열 경로에 파일을 전달하고 해당 파일을 같은 줄의 다른 경로에 복사하는 방법은 무엇입니까? [폐쇄]

문자열 경로에 파일을 전달하고 해당 파일을 같은 줄의 다른 경로에 복사하는 방법은 무엇입니까? [폐쇄]

저는 Linux에서 스크립팅을 처음 사용합니다.

각 줄에 하나 이상의 공백으로 구분된 두 개의 문자열(파일 경로)이 포함된 입력 텍스트 파일이 있습니다.

저는 첫 번째 문자열(경로)에 나열된 파일을 전달하고, 해당 파일을 두 번째 문자열(경로)에 복사하고, 각 입력 파일의 각 줄에 대해 반복하는 자동화된 스크립트 파일을 작성 중입니다.

입력 파일에 나열된 모든 파일이 포함된 .zip 파일이 있습니다.

다음과 같습니다.

/path/to/file.x   /different/path/to/file.x
/path/to/file2.x  /different/path/to/file2.x

등.

여기서 file.x가 전달된 다음 별도의 .zip 파일에서 다른 경로로 복사됩니다.

각 입력 파일에는 서로 다른 줄 수와 서로 다른 경로가 표시된 고유한 .zip이 있습니다.

나는 스크립트를 실행해 볼까 생각했습니다.

~$ ./script.sh files.zip map.txt

그런 다음 스크립트를 작성하십시오.

zipfile = "$1"
map = "$2"
externalprogram "$zipfile" "$map"

while IFS='' read -r line; 
do
    VAR_STR=$line
    aLeng=${#VAR_STR[@]}
    IFS=/ read -a arr <<< "$VAR_STR"
    FILE="${arr[${aLeng}]-1}"

    cp <path to zip file>/$FILE /different/path/
done < "$map"

분명히 꽤 복잡하고 두 번째 경로를 같은 줄의 변수로 전달하는 방법을 모르겠습니다.

어떤 의견이라도 감사하겠습니다. 감사해요.

편집: 스크립트 실행을 언급한 곳에 map.txt를 넣으라는 뜻이었습니다. 또한 이것은 나에게 꽤 복잡하다고 말하고 싶습니다. 아직 리눅스를 배우려면 할 일이 많아요^_^

답변1

귀하의 질문은 특정 질문이 아닌 의견을 공개적으로 요청하는 것이므로 여기에 몇 가지 의견이 있습니다.

  1. 이 명령을 최대한 활용하지 못하는 것 같습니다 read. 예를 들어, 여러 필드를 고유 변수로 한 번에 읽어들이는 데 이를 쉽게 사용할 수 있는 방법을 알아보려면 매뉴얼 페이지 문서를 확인하세요. read path1 path2.
  2. 왜 할당하려고 합니까 VAR_STR=$line? 제 생각에는 직접 할 수 있을 것 같습니다 $line.
  3. 두 번째 필드에서 경로를 자르는 방법은 영리하지만 대부분의 다른 쉘에는 관용구를 사용하여 변수에서 접두사 패턴을 제거하는 bash간단하고 간단하며 효율적인 방법이 있습니다 . . 다시 말하지만, 쉘이 기본적으로 매우 효율적으로 수행할 수 있는 다른 멋진 작업에 대한 문서는 매뉴얼 페이지를 참조하십시오.#FILE=${path2##*/}
  4. bash 변수에 대한 개인 명명 규칙을 모두 소문자 또는 모두 대문자로 표준화하되 혼합하지 마십시오.
  5. "분명히..."로 시작하는 당신의 결론은 나에게는 전혀 명확하지 않습니다. 왜냐하면 나는 당신이 무슨 뜻인지 전혀 모르기 때문입니다.

관련 정보