Mac OS 복구 모드 중에 bash 3.2의 이 (bash) 쉘 스크립트에서 mv가 실패하는 이유는 무엇입니까?

Mac OS 복구 모드 중에 bash 3.2의 이 (bash) 쉘 스크립트에서 mv가 실패하는 이유는 무엇입니까?

복구 모드 중에 Mac에서 bash 스크립트를 사용하여 일부 파일을 이동하려고 합니다. 복구를 시작한 후 터미널에 수동으로 명령을 입력하여 파일을 성공적으로 이동할 수 있었습니다. 그러나 한 가지 목표는 프로세스를 문서화하고 이식 가능하게 만드는 것이므로 스크립트가 필요합니다. mv스크립트에서 명령을 실행 하려고 하면 오류가 발생합니다 No such file or directory. 파일 경로를 수동으로 입력하면 명령이 올바르게 실행되는 것을 확인했지만 스크립트에서 여전히 오류가 발생합니다.

"변수 평가를 위해 큰따옴표( )와 달러 기호( $), 달러 기호( $)와 중괄호( {}) 및 기타 몇 가지 조합을 사용해 보았습니다 . 모두 같은 오류로 인해 실패합니다. 또한 src에 후행 슬래시, *src에 와일드카드( ), src와 dest에 후행 슬래시를 사용해 보았습니다 . 나는 완전히 당황했다. 이는 MacOS 복구 모드에만 해당될 수 있지만 프롬프트에서 이를 알리므로 -bash-3.2확실히 bash 3.2 셸인가요?

도와주세요. 고위 개발자들조차도 이 문제로 인해 어려움을 겪고 있습니다.
잘못된 구문 분석과 관련이 있을 수 있습니까? /*목적지 끝에 하나가 있다는 것을 알았지 만 지정하지 않았습니다 ...

스크립트는 다음과 같습니다

#! /bin/bash
#_# Setup
echo 'Setting up variables'
SYSDIR='/Volumes/Macintosh\ HD/System'
EXTDIR='Library/Extensions'
USERDIR='/Volumes/Macintosh\ HD/Users/admin'

#_# Bluetooth
echo 'Mitigating Bluetooth'
BLUE='IOBluetoothFamily.kext'
mkdir -p "$USERDIR/delete_me/$BLUE"
mv "$SYSDIR/$EXTDIR/$BLUE"/* "$USERDIR/delete_me/$BLUE"

echo '*Verify:* System Preferences/Bluetooth should display an error indicating bluetooth is not available.'

출력은 다음과 같습니다

-bash-3.2# ./bluetooth.sh 
Setting up variables
Mitigating Bluetooth
mv: rename /Volumes/Macintosh\ HD/System/Library/Extensions/IOBluetoothFamily.kext/* to /Volumes/Macintosh\ HD/Users/admin/delete_me/IOBluetoothFamily.kext/*: No such file or directory
*Verify:* System Preferences/Bluetooth should display an error indicating bluetooth is not available.
-bash-3.2# 

답변1

변수가 인용되어 있으므로 공백을 이스케이프할 필요가 없습니다.

SYSDIR='/Volumes/Macintosh HD/System/'

(등.)

또한 (접선적으로) 관련:

관련 정보