我在一个名为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
请参阅安装脚本
答案 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