bash - bash shell函数返回无法解释的变量
问题描述
有一个简单的 bash shell 片段
function gettop()
{
abc= /bin/pwd
}
funret=$(gettop)
echo $funret
funret的输出是命令/bin/pwd的输出:
/home/xxx/xxx
这是怎么发生的?
根据 shell 标准,函数返回带有echo或return,但这里不涉及这些;但结果显示getopt 返回/bin/pwd并且 $() 只是运行此命令。
另一件事是,在我删除abc=之后的额外空白空间后 ,输出将变为空;
这里到底发生了什么?
解决方案
输出即/home/xxx/xxx 是预期行为,因为在shell 中分配的变量中没有空格,即abc=/bin/pwd。现在,由于您已经使用空格定义了变量,因此 shell 尝试在函数期间执行空格之后的字符串,并且输出 /home/xxx/xxx 是因为 /bin/pwd 是 shell 的已知命令。
如果您使用下面的代码片段,它会引发错误。
function gettop()
{
abc= testing
}
funret=$(gettop)
echo $funret
错误:
./tmp.sh:第 5 行:测试:找不到命令
推荐阅读
- c - 如何使用 qsort() 根据它们与其他参考点的斜率对点进行排序?(没有 qsort_r()/qsort_s())
- python - 从文件中读取时如何在for循环中找到它的最后一项 - Python
- c - 使用 C 合并链表
- r - stat_function 没有过渡到 transition_states
- c++ - 消除指向重载的 const 成员函数和成员运算符的指针
- python - Tornado http 服务器 - 无法加载响应数据 - 反应应用程序块
- firebase - flutter firebase 从 Firestore 获取数组并将其分配给列表
- javascript - 使用 HTML 更改用户输入或 URL 的单选按钮或下拉菜单
- hazelcast-jet - Hazlecast Jet Cluster 处理重复项
- python - Tensorflow Keras - UnknownError:UnidentifiedImageError