首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Bash:执行并打印命令,就像我在终端中写的那样

Bash:执行并打印命令,就像我在终端中写的那样
EN

Stack Overflow用户
提问于 2017-05-24 07:50:42
回答 1查看 1.9K关注 0票数 0

已执行的:

代码语言:javascript
运行
复制
cd ~ && mkdir mytmp && cd mytmp/
echo > somefile

并在bash脚本mytmp/myscript.sh中执行此操作。

代码语言:javascript
运行
复制
#!/bin/bash
# version 1
cmd="find . -type f -printf %f\n"
$cmd

呈现想要的结果,即:

代码语言:javascript
运行
复制
somefile
myscript.sh

注意,由于某些原因,我不需要用引号包围%f\n,就像在终端中编写命令时那样。这样做会产生不好的结果:

代码语言:javascript
运行
复制
#!/bin/bash
# version 2
cmd="find . -type f -printf '%f\n'"
$cmd

在以下方面的成果:

代码语言:javascript
运行
复制
'somefile
''myscript.sh
'

我需要执行 $cmd,同时打印它,就像我把它写在终端中一样。

echo $cmd添加到version 1中可以正确地执行命令,但没有引用引用。

echo $cmd中添加version 2会像我想要的那样用引号回显命令,但是执行命令的结果很糟糕。

我怎样才能做到这一点?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-24 07:53:17

其实我已经有了这个问题的答案,但是由于我“不小心”得到了我想要的东西,而且在搜索之后没有在网上找到答案,所以我想我还是把它发到这里吧。

解决方案是将引号包括在version 2中,并在执行命令时使用eval消除它们。

代码语言:javascript
运行
复制
#!/bin/bash
cmd="find . -type f -printf '%f\n'"
eval $cmd
echo $cmd
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44152200

复制
相关文章

相似问题

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