相关疑难解决方法(0)

如何在bash中手动扩展一个特殊变量(ex:~tilde)

我的bash脚本中有一个变量,其值如下所示:

~/a/b/c
Run Code Online (Sandbox Code Playgroud)

请注意,它是未扩展的波形符号.当我对这个变量执行ls -lt(称之为$ VAR)时,我没有这样的目录.我想让bash解释/扩展这个变量而不执行它.换句话说,我希望bash运行eval但不运行evaluate命令.在bash中这可能吗?

我是如何在不扩展的情况下将其传递到我的脚本中的?我用双引号传递了围绕它的论点.

试试这个命令看看我的意思:

ls -lt "~"
Run Code Online (Sandbox Code Playgroud)

这正是我所处的情况.我想要扩展代字号.换句话说,我应该用什么来代替魔法来使这两个命令相同:

ls -lt ~/abc/def/ghi
Run Code Online (Sandbox Code Playgroud)

ls -lt $(magic "~/abc/def/ghi")
Run Code Online (Sandbox Code Playgroud)

请注意〜/ abc/def/ghi可能存在也可能不存在.

bash scripting tilde tilde-expansion

120
推荐指数
7
解决办法
7万
查看次数

"〜/ Desktop/test.txt:没有这样的文件或目录"

我写过这个剧本:

#!/bin/bash

file="~/Desktop/test.txt"
echo "TESTING" > $file
Run Code Online (Sandbox Code Playgroud)

该脚本不起作用; 它给了我这个错误:

./tester.sh: line 4: ~/Desktop/test.txt: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

unix bash shell

35
推荐指数
1
解决办法
8371
查看次数

Tilde扩展报价

我编写了一个脚本,必须在用户定义的目录中找到一些文件,这些文件可能包含波形符(因此,它可能有user_defined_directory='~/foo').构造看起来像

found_files=$(find "$user_defined_directory" -type f … )
Run Code Online (Sandbox Code Playgroud)

我使用引号来覆盖该路径中的可能空格,但根据手册页,波形扩展在引号中不起作用.我知道:运营商可能会进行这种扩展,但我无法弄清楚如何在这里使用它.

'user-defined-directory'取自用户$ HOME目录中的另一个配置文件.它不是作为参数传递给我的脚本,而是从我编写的脚本中的另一个配置中解析它.

bash

4
推荐指数
2
解决办法
3968
查看次数

标签 统计

bash ×3

scripting ×1

shell ×1

tilde ×1

tilde-expansion ×1

unix ×1