我有一个 bash 脚本,我想处理空格。我知道这里有很多关于此的问题,但我无法解决我的问题。
根据我所阅读的内容,以下内容应该有效。里面的空间
../tool_profile/OS\ Firmware/updater
正在逃逸。在脚本中,$2
变量在分配给DEST
.
如果我将此路径传递给ls
用引号括起来或在命令行上使用转义空格,它就可以工作。
示例脚本命令:
./make_initramfs.sh initramfs_root/ ../tool_profile/OS\ Firmware/updater/ initramfs
脚本中的 ls 错误:
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"
感谢您提供有关我做错了什么的任何线索!^_^