如何从终端传递bash管道中的参数

时间:2018-01-21 11:37:30

标签: bash

我在一个名为test.sh

的文件中显示了一个bash脚本
#!/usr/bin/env bash
echo $1
echo "execution done"

当我使用

执行此脚本时

案例-1

./test.sh "started"

    started
    execution done

正确显示

案例-2

如果我用

执行
bash test.sh "started"

我正在以

为出发点

开始

执行完毕

但我想使用带有参数的cat或wget命令来执行此操作 比如像。

Q1

cat test.sh | bash

或使用命令

Q2

wget -qO - “url contains bash”| bash

所以在Q1和Q2中如何传递参数

这个github中显示的东西

https://github.com/creationix/nvm

请参阅安装脚本

2 个答案:

答案 0 :(得分:0)

你不需要管道打击; bash在您的终端中作为标准运行。

如果我有一个脚本,我必须使用猫,这就是我要做的事情:

cat script.sh > file.sh; chmod 755 file.sh; ./file.sh arg1 arg2 arg3

script.sh是源脚本。你可以用你想要的任何东西替换那个电话。

这有安全隐患;只需在shell中运行任意代码 - 尤其是使用wget,代码来自远程位置。

答案 1 :(得分:0)

$ bash <(curl -Ls url_contains_bash_script) arg1 arg2

说明:

$ echo -e 'echo "$1"\necho "done"' >test.sh
$ cat test.sh
echo "$1"
echo "done"
$ bash <(cat test.sh) "hello"
hello
done
$ bash <(echo -e 'echo "$1"\necho "done"') "hello"
hello
done