我有一個bash腳本,我想處理空格。我知道這裏有很多關於這方面的問題,但我無法解決我的問題。BASH腳本:處理具有轉義空格的路徑
根據我讀過的內容,以下內容應該可以工作。 ../tool_profile/OS\ Firmware/updater
中的空間正在逃脫。在腳本中,$2
變量在被分配到DEST
時被引用在引號中。
如果我將此路徑引入到用引號引起來的ls
中,或者在命令行中使用了空格,它就可以工作。
示例腳本命令:從LS
./make_initramfs.sh initramfs_root/ ../tool_profile/OS\ Firmware/updater/ initramfs
誤差在腳本:
ls: cannot access ../tool_profile/OS Firmware/updater/: No such file or directory
make_initramfs.sh:
#!/bin/bash
if [ $# -ne 3 ]; then
echo "Usage: `basename $0` <root> <dest> <archive_name>"
exit 1
fi
ROOT=$1
DEST="$2"
NAME=$3
echo "[$DEST]"
# cd and hide output
cd $ROOT 2&>/dev/null
if [ $? -eq 1 ]; then
echo "invalid root: $ROOT"
exit 1
fi
ls "$2" # doesn't work
ls "$DEST" # doesn't work
# check for 'ls' errors
#if [ $? -eq 1 ]; then
# echo "invalid dest: $DEST"
# exit 1
#fi
#sudo find . | sudo cpio -H newc -o | gzip --best > "$DEST"/"$NAME"
謝謝你的任何線索,我做錯了什麼!^_^
大...對我張貼了這個,我才意識到我在做什麼錯了......我想。 – rkyser 2012-07-12 18:41:16
是的。在檢查相對路徑是否正確之前,我更改目錄。所以在改變之後,相對路徑不再有效。 – rkyser 2012-07-12 18:43:38
我建議將其寫成答案(回答自己的問題沒有錯)或者完全刪除問題。 – chepner 2012-07-12 18:47:28