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

}

관련 정보