小编Tom*_*erg的帖子

为什么“source <(cmd)”有效但“$(cmd)”无效

我想要一个脚本来调用 params,它会向我当前的 shell 添加一些别名。必须根据调用参数和我启动它的当前目录来构建别名。如果可能,我不想获取脚本的源代码,只需像任何其他脚本一样运行它即可。

这是我迄今为止所做的:

我写了一个小的 shell 脚本来生成一些别名,比如

echo 'alias foo="$1"'
Run Code Online (Sandbox Code Playgroud)

并将其保存为具有 +x 权限的文件“myscript”。然后我通过控制台执行它来设置别名

$(myscipt hello)
Run Code Online (Sandbox Code Playgroud)

效果很好

当我改变我的shell脚本时

echo 'alias foo="bar $1 -param"'
Run Code Online (Sandbox Code Playgroud)

并像上面一样再次执行,结果是

bash: alias hello" not found
bash: alias -param" not found
Run Code Online (Sandbox Code Playgroud)

???。我已经摆脱了 bar 和 -param 之间的空白,但无法让它工作。

当我执行

source <(myscript hello)
Run Code Online (Sandbox Code Playgroud)

一切都像预期的一样好(这是我现在的解决方案,但不确定它是否是最好的)。

一些想法如何获得更好的解决方案?

linux bash shell command-line

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

标签 统计

bash ×1

command-line ×1

linux ×1

shell ×1