我有一个简单的Bash脚本:
#!/usr/bin/env bash
read X
echo "X=$X"
当我使用
./myscript.sh
命令执行时,它可以正常工作。但是当我使用cat myscript.sh | bash
命令执行时,它实际上将echo "X=$X"
放入了$X
中。因此,这个脚本会打印出在
cat myscript.sh | bash
命令下执行的Hello World:#!/usr/bin/env bash
read X
hello world
echo "$X"
- 使用
cat myscript.sh | bash
执行脚本的好处是什么?为什么不能像使用./myscript.sh
一样执行它? - 如何避免Bash逐行执行,而是在STDIN到达末尾后执行所有行?
bash ./myscript.sh
? - anubhava./myscript.sh
。 - Karoly Horvathcurl
下载一个 shell 脚本,然后将其传输到 bash 中,以避免创建临时文件,就像 Composer 在 PHP 中所做的那样(https://getcomposer.org/download/)。但是,如果这种方式不起作用,我还需要使用 PHP 或临时文件来完成。 - TheFoxbash ./myscript.sh
或者./myscript.sh
来完成它,我也不会问了。 - TheFox