Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么不是';t bash在$()运算符内拆分字段?_Bash - Fatal编程技术网

为什么不是';t bash在$()运算符内拆分字段?

为什么不是';t bash在$()运算符内拆分字段?,bash,Bash,只是为了学习,当我尝试一些东西时,我注意到一种我无法从逻辑上解释的bash行为 $ ls $(echo a) ls: cannot access 'a': No such file or directory $ ls $($'\145\143\150\157\40\141') echo a: command not found $ ls $($"\145\143\150\157\40\141") \145\143\150\157\40\141: command not found 在第一种

只是为了学习,当我尝试一些东西时,我注意到一种我无法从逻辑上解释的
bash
行为

$ ls $(echo a)
ls: cannot access 'a': No such file or directory

$ ls $($'\145\143\150\157\40\141')
echo a: command not found

$ ls $($"\145\143\150\157\40\141")
\145\143\150\157\40\141: command not found

在第一种情况下,
echo a
被求值为
a
,这将成为
ls
的参数。很公平。然而,在第二种情况下,八进制编码字符串被评估为
回波a
,与预期一致;但是整个字符串被
$()
视为命令。此外,在第三种情况下,没有使用双引号进行扩展。为什么田地不分开?我想这与bash中的
bash
有关。但是,我没有解释到底是什么问题。有什么方法可以使字段拆分工作,使其像第一种情况一样处理吗?

一个
$'string'
形式的单词被扩展为一个带引号的字符串,就好像美元符号不存在一样。也就是说

$($'\145\143\150\157\40\141')

$('echo a')
单引号字符串不进行分词或任何其他类型的扩展。看

有没有什么方法可以让字段拆分工作正常进行,以便像第一个案例一样处理

但这是不可取的,请参见



关于
$“string”
语法,请看,这完全是另一回事。

一个形式为
$“string”
的单词被扩展为一个带引号的字符串,就好像美元符号不存在一样。也就是说

$($'\145\143\150\157\40\141')

$('echo a')
单引号字符串不进行分词或任何其他类型的扩展。看

有没有什么方法可以让字段拆分工作正常进行,以便像第一个案例一样处理

但这是不可取的,请参见


关于
$“string”
语法,请看,这完全是另一回事