首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >`location=$(键入-p“htop”)在脚本中的意思是什么?

`location=$(键入-p“htop”)在脚本中的意思是什么?
EN

Stack Overflow用户
提问于 2022-12-02 20:44:16
回答 2查看 37关注 0票数 0

剧本是这样的

代码语言:javascript
复制
#!/bin/bash

echo
echo "################################################################"
echo "  Installing Htop                                               "
echo "################################################################"
echo

if ! location=$(type -p "htop"); then
    sudo apt install -y htop
fi

对于脚本中的这个代码片段对location=$(type -p "htop");有什么影响,我感到困惑,我需要对此做一个明确的解释。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-12-02 20:52:35

  • !否定以下command;
  • location=...的退出状态,为变量$location;
  • $(...) is 命令替换分配一个值。它扩展到封闭命令的输出,该命令的退出状态被传播为赋值的退出status;
  • type -p htop (此处不需要双引号)在$PATH中搜索可执行htop并返回到它的完整路径。如果不存在这样的可执行文件,并且没有别名或名为htop的函数(在这种情况下,它返回一个空字符串,但没有失败),它就会失败。

综合起来,它搜索一个名为htop的可执行文件,分析到$location的完整路径,如果找不到它(并且没有别名或函数定义它),它运行sudo apt install -y htop,在某些系统上(使用apt管理包)尝试以根权限安装htop包,回答yes的任何问题。

票数 2
EN

Stack Overflow用户

发布于 2022-12-02 20:53:11

简而言之,赋值的退出状态是命令替换的退出状态,命令替换的退出状态是type的退出状态。

如果type -p htop是一个可以执行的命令,则htop的退出状态为0,输出是该命令的完整路径。

这里的想法是,如果location存在,则为它分配到htop的完整路径,如果不存在,则运行sudo apt install -y htop来安装它。(注释中提到的一个小问题是,如果需要安装location,那么htop仍然存在。)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74661270

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档