bash - BASH:将查找命令的值打印到某个点并分配给一个变量
问题描述
我试图分两步定义一个变量-
$ find /u01/app -name cmd_history.txt
它返回类似的东西(例如)
/u01/app/refresh/db/18c/test/etc/cmd_history.txt
$ export WORK_DIR=/u01/app/refresh/db/18c/test/etc
(不包括 /cmd_history.txt)
基本上,我想在 1 个命令中实现这一点,即将 find 的输出提供给 awk 或剪切并省略 /cmd_history.txt。
$ export WORK_DIR=find /u01/app -name cmd_history.txt | awk or cut
我怎样才能做到这一点?
解决方案
使用 GNU find
:
您可以使用 打印前导目录并在第一次匹配后-printf '%h'
退出。find
-quit
export WORK_DIR=$(find /u01/app -name 'cmd_history.txt' -printf '%h' -quit)
使用 BSD find
:
打印第一个匹配项,然后退出并使用dirname
.
export WORK_DIR=$(dirname "$(find /u01/app -name 'cmd_history.txt' -print -quit)")
推荐阅读
- regex - 无效的正则表达式没有重复使用正则表达式的电子邮件验证异常
- angular - 带有材料选项卡的 Angular 8 - 重新加载时选择最后一个活动选项卡
- python - Keras:val_loss 正在增加并且评估损失太高
- tensorflow - Deeplab tensorflow 实现:训练自定义数据。如何选择参数?
- excel - 如何从另一个工作表复制图片并粘贴到单元格注释中
- javascript - 如何在 ${} Javascript 中添加双花括号
- javascript - Joomla Javascript没有响应
- javascript - 在鼠标悬停时加载 react-bootstrap 的下拉数据而不是在 React 功能组件中单击鼠标?
- jquery - 使用 Ajax 和 Jquery 时部分空 POST 或 QueryDict
- postgresql - Postgresql 模式和数据比较