gpt4 book ai didi

linux - .sh 脚本没有正确返回变量

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:33:59 26 4
gpt4 key购买 nike

我创建了一个名为 alias.sh 的文件,我在其中放入了以下代码:

#!/bin/bash

OUTPUT="$(alias | awk -F'[ =]' '{print $2}')"
echo "${OUTPUT}"

每当我运行命令alias | awk -F'[ =]' '{print $2}' 在终端中,它以我的首选格式正确返回设置别名的列表。

但是,当我执行像 $ ./alias.sh 这样的脚本时,它只是返回一个空行。

如果我替换 别名 | 脚本就可以工作awk -F'[ =]' '{print $2}' 命令与 ls 命令。它甚至保留换行符。

谁能帮我理解为什么脚本没有返回预期的结果?

最佳答案

错误的实际原因是因为alias在shell不交互时没有扩展,

man bash 页面,

[..] Aliases are not expanded when the shell is not interactive, unless the expand_aliases shell option is set using shopt [..]

将下面的行添加到脚本的顶部以手动强制扩展。

shopt -s expand_aliases

然后获取脚本而不是执行

#!/bin/bash

shopt -s expand_aliases

output=$(alias | awk -F'[ =]' '{print $2}')
echo "$output"

现在将脚本作为

. ./myScript.sh

关于linux - .sh 脚本没有正确返回变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43090797/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com