我正在编写一个 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
$