Heredoc이 bash 스크립트에서 작동하지 않습니다.

Heredoc이 bash 스크립트에서 작동하지 않습니다.

Ubuntu mate에서 작동하는 bash 스크립트를 만들었지만 이제 Manjaro에서는 작동하지 않습니다. 이 방법에서는 실패합니다.

#!/bin/bash

dev_block="/dev/sdb"

createPartitions(){
    
        echo "Creating Partitions on "$dev_block"..."
        sfdisk $dev_block -uS <<-EOF
        start=63, size=409600, type=c, bootable
        start=411648, type=af
        EOF
    }

createPartitions

나는이 출력을 얻습니다 ...

Creating Partitions on /dev/sdb...
Checking that no-one is using this disk right now ... OK

Disk /dev/sdb: 28.84 GiB, 30966546432 bytes, 60481536 sectors
Disk model: USB FLASH DRIVE 
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: EB88C926-F304-6D45-82C8-0BAC5E73A2CB

Old situation:

Device      Start      End  Sectors  Size Type
/dev/sdb1    2048   411585   409538  200M EFI System
/dev/sdb2  413633 60481502 60067870 28.6G Apple HFS/HFS+

>>> Created a new GPT disklabel (GUID: 0EBA642D-3CB5-8841-A150-D18AC387D65F).
/dev/sdb1: Failed to add #1 partition: Invalid argument
Leaving.

또한 EOF를 뒤로 이동하려고 시도하여 그 앞에 탭이 없습니다.

createPartitions(){

    echo "Creating Partitions on "$dev_block"..."
    sfdisk $dev_block -uS <<-EOF
    start=63, size=409600, type=c, bootable
    start=411648, type=af
EOF
}

확인해 보니 닫는 EOF 뒤에 탭이나 공백이 없습니다. 그러나 우분투에서도 종료 EOF를 뒤로 이동할 필요가 없었습니다.

이것을 어떻게 디버깅합니까? 어쩌면 sfdisk가 Arch에서 다르게 동작할까요?

건배.

답변1

답을 찾았습니다... Manjaro에서 코드를 테스트하는 동안 sfdisk 명령을 실행할 때마다 드라이브의 파티션과 파일 시스템을 삭제하는 필수 방법을 주석 처리했습니다.

wipeFilesystems(){

echo "Wiping filesystems on "$dev_block"..."
sfdisk --delete $dev_block
wipefs --all $dev_block

}

관련 정보