bash 在运行之前重新处理字符串

bash 在运行之前重新处理字符串

考虑hello world当前目录中有一个名为的目录。是的,该目录中有一个空格。举例来说,假设它有一个名为 f1.txt 的文件。

ls 'hello world'

将打印

f1.txt

a="ls 'hello world'"
$a

ls: cannot access ''\''hello': No such file or directory
ls: cannot access 'world'\''': No such file or directory

所以问题是如何让 ls 列出目录hello world。基本上如何做到这一点

a="1 2"
b="ls $a"
$b

实际列出文件夹的内容hello world

PS:我不想做

a="1 2"
ls $a

我想存储它然后才运行它

答案1

francois@zaphod:~$ mkdir "hello world"
francois@zaphod:~$ touch "hello world"/{a,b,c}
francois@zaphod:~$ a="ls 'hello world'"
francois@zaphod:~$ eval "$a"
a  b  c
francois@zaphod:~$ 

eval 您的变量将执行该变量作为您需要运行的命令的文本

相关内容