加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash:将脚本的输出作为脚本执行

发布时间:2020-12-15 18:57:49 所属栏目:安全 来源:网络整理
导读:我正在写一个简单的脚本来生成给定长度的a和b的所有组合(比如说10).我希望能够在命令行上执行此操作(我知道如果我只是将所有内容放在bash脚本文件中并执行它,这相当容易).但是,我想知道是否有可能没有任何额外的文件.这是我到目前为止所拥有的: n=10;for i
我正在写一个简单的脚本来生成给定长度的a和b的所有组合(比如说10).我希望能够在命令行上执行此操作(我知道如果我只是将所有内容放在bash脚本文件中并执行它,这相当容易).但是,我想知道是否有可能没有任何额外的文件.这是我到目前为止所拥有的:
n=10;
for i in `seq 1 1 $n`; do
    echo "for a$i in {a..b}; do ";
done;
echo -n "echo ";
for i in `seq 1 1 $n`; do
    echo -n '$'"a$i"; done;
    echo;
for i in `seq 1 1 $n`; do
    echo "done;";
done

(我将代码格式化为可读性,但它实际上是从提示符运行的一行)

这给了我以下输出:

for a1 in {a..b}; do 
for a2 in {a..b}; do 
for a3 in {a..b}; do 
for a4 in {a..b}; do 
for a5 in {a..b}; do 
for a6 in {a..b}; do 
for a7 in {a..b}; do 
for a8 in {a..b}; do 
for a9 in {a..b}; do 
for a10 in {a..b}; do 
echo $a1$a2$a3$a4$a5$a6$a7$a8$a9$a10
done;
done;
done;
done;
done;
done;
done;
done;
done;
done;

这很好.如果我复制并将其粘贴回命令行,它就像一个魅力,并给我结果.

问题是如何使用初始脚本执行此操作,无需复制粘贴,也无需将任何内容重定向到文件.

我已经尝试在脚本周围粘贴$()但是这给了我“找不到”命令’”,因为它不是真正的命令而是内置的bash.在此之前我曾尝试将eval放在某个地方,但我只是不断收到更多错误.我有点卡住了,所以任何帮助都会非常感激.

(顺便说一句,重申一点,我这样做或多或少只是为了学习bash更多 – 这就是为什么我不想将输出重定向到文件然后执行该文件.我知道如何做到这一点,但我不知道如何从命令行执行此操作)

你需要使用eval,$()给你一个字符串.
eval $( echo echo foo )

另一种选择是坚持使用子壳并将其管道化为bash:

(echo echo foo) | /bin/bash

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读