“exec”命令的行为

“exec”命令的行为

我正在编写一个 bash 脚本来计算命令并执行它。

将结果放入变量并显示出来。

之后,exec 就完成了。

exec 的程序必须接受输入数据。

在用例中,不显示输入数据。

我不明白为什么...

我找到了一个解决方案(t2.sh),但我对 t1.sh 不能按我想要的方式工作的原因感兴趣。

$ cat t1.sh
#!/bin/bash

t=$\'ssh xxx@localhost "mysql -P3306 -u uuuu -ppppp -h localhost DB_test -e \\\'select now()\\\'"\'

v=$(eval $t | tail -n1)
#v=$(bash <<< $t | tail -n1)

echo $v

exec cat
$ ./t1.sh <<< "toto"
Pseudo-terminal will not be allocated because stdin is not a terminal.
mysql: [Warning] Using a password on the command line interface can be insecure.
2020-04-24 21:56:59
$ ##### toto is not displayed, why ?
$ cat t2.sh
#!/bin/bash

t=$\'ssh xxx@localhost "mysql -P3306 -u uuuu -ppppp -h localhost DB_test -e \\\'select now()\\\'"\'

#v=$(eval $t | tail -n1)
v=$(bash <<< $t | tail -n1)

echo $v

exec cat
$ ./t2.sh <<< "toto"
Pseudo-terminal will not be allocated because stdin is not a terminal.
mysql: [Warning] Using a password on the command line interface can be insecure.
2020-04-24 21:57:10
toto
$

相关内容