首页 > 解决方案 > 为什么我根本不能使用触摸?

问题描述

我有这个基本上需要添加的脚本

alias www-owns-assets="sudo chown www-data public/assets -R"

如果此行(或此文件)不存在,则转到 ~/.bash_aliases。

这是脚本:

ls ~/

LINE='alias www-owns-assets="sudo chown www-data public/assets -R"'

FILE='~/.bash_aliases'

touch $FILE

grep -qsFx -- "$LINE" $FILE || echo "$LINE" >> $FILE

touch行引发错误:

touch: cannot touch '~/.bash_aliases': No such file or directory

即使 ls ~/ 工作正常。我究竟做错了什么?(我试过带引号和不带引号 - 但也许不是正确的。

标签: bashgreptouchecho

解决方案


的使用~是不可靠的,它可能适用于脚本,也可能不适用于脚本,并且~如果引用(单引号或双引号)则不会扩展。尝试$HOME改用。

FILE=$HOME/.bash_aliases

...或删除引号。

FILE=~/.bash_aliases
  • 但就像我所说的那样,最好使用$HOME.
  • 作为旁注,避免在纯粹出于内部目的的变量上使用大写字母。

推荐阅读