我尝试创建一个目录(如果它不存在),并且在该行的下游,在该目录中创建一个日志文件。它将位于当前用户主目录中 在伪代码中:
If directory "/home/LOGS" does not exist
make directory "/home/LOGS"
然后,无论何时创建日志文件,它都将保存在该目录中,而不是运行程序的目录。
这是我到目前为止所做的,而且它只是不起作用......
pushd -n $"../LOGS" >/dev/null 2>&1
#Create the logs folder
if [ ! -d $"home/LOGS" ]; then
mkdir -p $"home/LOGS"
fi
如果有帮助,我的文件就像这样保存:
function savefile {
# Save to file
if [ -e $username.log ]; then
echo "Username already exists, returning you to the menu."
sleep 2
clear
menu
else
echo $fullname >> $username.log
echo $password >> $username.log
curdate=$(date +'%d/%m/%Y %H:%M:%S')
echo $curdate >> $username.log
echo "Creating your account"
sleep 2
clear
echo "Account created"
echo
afterBasic
fi
}
非常感谢任何帮助。
答案 0 :(得分:3)
mkdir -p
本身提供了您想要的逻辑,因此您只需执行以下操作:
mkdir -p "$HOME/LOGS" && pushd "$HOME/LOGS" >/dev/null || exit
mkdir -p
创建目标目录(如果目标目录尚未存在),然后更改为目录目录。
mkdir -p
也表示成功。mkdir -p
,而不必担心目录是否已存在。&& pushd "$HOME/LOGS" >/dev/null
然后更改为目录"$HOME/LOGS"
,禁止其通常的 stdout 输出(>/dev/null
)
|| exit
命令并非#39; t显式指定退出代码,前一个命令的退出代码通过 - 在这种情况下,根据定义,它是非零的。)请注意,我已使用exit
,假设您真正想要的是什么;即,当前用户主目录中的"$HOME/LOGS"
子目录。
如果您想要绝对路径LOGS
,只需从原始字符串中删除/home/LOGS
。
$
会评估为$"home/LOGS"
,即相对路径。
很少使用的home/LOGS
字符串适用于本地化。