Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Bash与stdin中的脚本文本和命令行中的选项一起使用_Bash_Sh - Fatal编程技术网

将Bash与stdin中的脚本文本和命令行中的选项一起使用

将Bash与stdin中的脚本文本和命令行中的选项一起使用,bash,sh,Bash,Sh,我想使用/bin/bash(可能是/bin/sh),并将选项-f传递给脚本并由脚本处理。 确切地说 while getopts f OPT do case $OPT in "f" ) readonly FLG_F="TRUE" esac done if [ $FLG_F ]; then rm -rf $KIBRARY_DIR fi 当这些行在文件中时 我可以这样做,比如 wget http://hoge.com/hoge.sh /bin/bash hoge.sh -f

我想使用/bin/bash(可能是/bin/sh),并将选项
-f
传递给脚本并由脚本处理。 确切地说

while getopts f OPT
do
  case $OPT in
    "f" ) readonly FLG_F="TRUE" 
   esac
done

if [ $FLG_F ]; then
  rm -rf $KIBRARY_DIR
fi
当这些行在文件中时

我可以这样做,比如

wget http://hoge.com/hoge.sh
/bin/bash hoge.sh -f
但不是

/bin/bash -f hoge.sh
我知道原因但我想这样做

wget -O - http://hoge.com/hoge.sh | /bin/bash
hoge.sh的-f选项不适用于/bin/bash

有什么好方法可以做到这一点吗

/bin/bash <(wget -O - http://hoge.com/hoge.sh) -f
/bin/bash使用bash可以

wget -O - http://hoge.com/hoge.sh | /bin/bash -s -- -f
-s一样,从标准输入读取命令。此选项还允许设置位置参数。
它也可以与其他POSIX shell一起使用。

使用bash您可以

wget -O - http://hoge.com/hoge.sh | /bin/bash -s -- -f
-s一样,从标准输入读取命令。此选项还允许设置位置参数。

它应该也适用于其他POSIX shell。

顺便说一句,这里有一些引用错误——请尝试通过Ohmy运行代码,。。。。感谢您所做的一切。另外,
-f
不是设置
FLG_f
的唯一方法;该值可以从环境中继承。试试
FLG\u F=TRUE bash hoge.sh
。在检查
-F
选项之前,您需要清除脚本顶部的
FLG\u F
值。直接从第三方运行shell脚本是个坏主意;下载它,验证它是否能满足您的期望,然后运行它……当然不能通过普通的http;如果您不使用SSL,您就不知道它是从您认为的地方来的。建立一个变异的内联代理其实并不难——见鬼,差不多20年前,我是作为愚人节玩笑的一部分这么做的。相信你正在下载代码的人没有被黑客攻击也不是明智之举——这就是为什么健壮的软件打包系统(以及旨在安全的DSCMs)支持OpenPGP签名。顺便说一句,你这里有一些引用错误——试着通过Ohmy运行你的代码,。。。。感谢您所做的一切。另外,
-f
不是设置
FLG_f
的唯一方法;该值可以从环境中继承。试试
FLG\u F=TRUE bash hoge.sh
。在检查
-F
选项之前,您需要清除脚本顶部的
FLG\u F
值。直接从第三方运行shell脚本是个坏主意;下载它,验证它是否能满足您的期望,然后运行它……当然不能通过普通的http;如果您不使用SSL,您就不知道它是从您认为的地方来的。建立一个变异的内联代理其实并不难——见鬼,差不多20年前,我是作为愚人节玩笑的一部分这么做的。相信你正在下载代码的人不会被黑客攻击也不是明智之举——这就是为什么健壮的软件打包系统(以及旨在安全的DSCMs)支持OpenPGP签名的原因。非常感谢你也考虑过POSIX我会处理。。这是一个坏主意,原因各不相同;在执行它之前,你不知道你从hoge.com得到了什么。它起作用了。非常感谢你也考虑过POSIX我会处理。。这是一个坏主意,原因各不相同;在执行之前,您不知道从hoge.com获得了什么。