我写了一个自动化脚本来安装内核。该脚本需要能够在不同的计算机上运行,因此它应该独立于用户。我想在开始安装之前检查用户是否已经下载了.tar.gz文件。
#!/bin/bash
file1="/home/csgurel/Downloads/auto_video.tar.gz"
file2="~/Downloads/auto_video.tar.gz"
function kernel_install() {
if [ -f $file1 ] ; then
echo "Kernel installation is started."
# execute the installation functions here.
else
echo "The required file couldn't be located."
fi
}
kernel_install
问题是,当我使用/home/user/<directory>
形式的绝对目录(即file1)时,一切正常,并且
内核安装开始。
已打印,但是当我使用波浪号符号使目录独立于用户名时,其形式为~/<directory>
(即file2)
找不到所需的文件。
如何检查该文件是否独立于用户名而存在?
答案 0 :(得分:1)
这里来自ShellCheck's wiki:
rm "~/Desktop/$filename"
rm "$HOME/Desktop/$filename"
在单引号或双引号中,波浪号不会扩展到用户的主目录。使用双引号和$HOME
代替。
或者,~/
也可以不加引号,例如rm ~/"Desktop/$filename"
。