bash - "~/Desktop/test.txt: No such file or directory"

标签 bash shell unix

我写了这个脚本:

#!/bin/bash

file="~/Desktop/test.txt"
echo "TESTING" > $file

脚本不工作;它给了我这个错误:

./tester.sh: line 4: ~/Desktop/test.txt: No such file or directory

我做错了什么?

最佳答案

尝试用 $HOME 替换 ~。波浪号扩展仅在波浪号未被引用时发生。请参阅信息“(bash) Tilde Expansion”

您也可以在不引用的情况下执行 file=~/Desktop,但是如果您将其中的一部分替换为带有字段分隔符的内容,那么它将中断。无论如何,引用变量的值可能是一件好事。引用变量 file=~/"Desktop" 也可以,但我认为这很丑陋。

如果可能,首选 $HOME 的另一个原因是:波浪线扩展只发生在单词的开头。所以 command --option=~/foo 只有在 command 本身进行波浪线扩展时才有效,这会因命令而异,而 command --option="$ HOME/foo" 将始终有效。

关于bash - "~/Desktop/test.txt: No such file or directory",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8409024/

相关文章:

bash - 使用简单数据结构在 Bash 脚本中进行深度优先搜索

linux - 计算来自标准输入的字数和行数

linux - unix - 打印文件中不同的控制字符列表

linux - oracle从plsql获取变量返回到linux

bash - 根据 shell 脚本中的列打印行

linux - Bash - 变量不在其他变量中计算

python - 相当于 python 3 中的 find coreutil 命令递归返回目录结构中的所有文件和文件夹?

linux - 如何从数据行中删除换行符

bash - 编写 Kerberos Ktutil 脚本来制作 key 表

mysql - 如何通过 shell 脚本执行远程 MySQL 查询而不在我的 shell 脚本中输入开放文本密码?