我有两个脚本。www.example.com调用www.example.com test4.sh calls 1.sh
我不明白为什么www.example.com的东西我按"d"键。你能解释一下吗1.sh things I am pressing the "d" key. Can you explain please
这里是www.example.com1.sh
set -x
echo "Please enter some input: "
echo "enter $(echo $RANDOM)"
sleep 2
read input_variable
echo "You entered: $input_variable"
这里是www.example.comtest4.sh
set -x
set +e
mkfifo p_in
bash 1.sh p_in<0 | sed -e 's/^/1\.sh:: /' &
cat - 1> p_in
输出:
pi@raspberrypi:~/tmp/lolttt $ bash test4.sh
+ set +e
+ mkfifo p_in
mkfifo: cannot create fifo 'p_in': File exists
+ bash 1.sh p_in
+ cat -
+ sed -e 's/^/1\.sh:: /'
+ echo 'Please enter some input: '
1.sh:: Please enter some input:
++ echo 23876
+ echo 'enter 23876'
1.sh:: enter 23876
+ sleep 2
+ read input_variable
+ echo 'You entered: d'
1.sh:: You entered: d
如果直接从bash运行www.example.com,则不会发生这种奇怪的行为。 1.sh directly from bash. This weird behaviour only happens from test4.sh
帮帮忙好吗?
1条答案
按热度按时间nnt7mjpx1#
因为在当前工作目录中有一个名为
0
的文件,其内容为d
。bash 1.sh p_in<0
-等于bash 1.sh p_in <0
-运行带有参数p_in
的命令1.sh
,并将名为0
的文件重定向到标准输入。我想你需要
bash 1.sh 0<p_in
。左边是文件描述符。或者只是<p_in
没有0,默认输入是文件描述符0。