Bash
為什麼 mv 在 Mac OS 恢復模式期間在 bash 3.2 中的這個(bash)shell 腳本中失敗?
我正在嘗試在恢復模式期間在 mac 上使用 bash 腳本移動一些文件。啟動到恢復後,我可以通過在終端中手動輸入命令來成功移動文件。但是,一個目標是記錄該過程並使其可移植,因此需要一個腳本。當我嘗試
mv
從腳本執行命令時,出現錯誤No such file or directory
。當我手動輸入文件路徑時,我已經確認該命令正確執行,但腳本繼續出錯。我嘗試過使用雙引號(
"
)和美元符號($
)、美元符號($
)和大括號({}
),以及其他一些變數評估的組合。它們都因相同的錯誤而失敗。我還嘗試在 src 上使用斜杠,在 src 上使用萬用字元 (*
),並在 src 和 dest 上使用斜杠。我完全被難住了。可能這是特定於 MacOS 恢復模式的,但肯定因為提示提示-bash-3.2
,這一定是 bash 3.2 shell?請幫忙 - 甚至我們的高級開發人員都被這個問題難住了……
這可能與不正確的解析有關嗎?我注意到
/*
目的地的末尾有一個,我沒有具體說明……腳本是:
#! /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#
您的變數被引用,您不需要轉義空格:
SYSDIR='/Volumes/Macintosh HD/System/'
(ETC。)
也(切線)相關: