如果通过 ssh 连接到服务器本身,bash 脚本中会出现意外的不明确重定向

问题描述 投票:0回答:1

我执行脚本,例如其中之一如下。 它按我的预期工作。该文件将发送到远程PC,所有复制输出,包括可能的错误将存储在带有扩展名日志的文件中。

#!/bin/bash
scp /tmp/v8_8PcnYL_41.sh evgeniy@Ubuntu-VM2:/tmp/v8_8PcnYL_44.sh >> "/tmp/v8_8PcnYL_42.log" 2>&1

但是,如果执行PC和ssh服务器是同一台PC,则无法工作。在这种情况下,我收到错误“:不明确的重定向 1”, 但是,如果我在终端中执行第二行,则不会出现错误,并且操作将按预期执行。 那么,为什么会发生这种情况呢?那么遇到这种情况该怎么办?

Ubuntu 18.04,还有 22.04

为了更好地理解这里是控制台输出:

evgeniy@Ubuntu-VM2:~$ sudo su usr1cv8
[sudo] Enter password for evgeniy:
$ cat /tmp/v8_8PcnYL_43.sh
#!/bin/bash
scp /tmp/v8_8PcnYL_41.sh evgeniy@Ubuntu-VM2:/tmp/v8_8PcnYL_44.sh >> "/tmp/v8_8PcnYL_42.log" 2>&1
$ ls -lha /tmp/v8_8PcnYL_43.sh
-rwxr-x--x 1 usr1cv8 grp1cv8 111 сен 28 20:34 /tmp/v8_8PcnYL_43.sh
$ bash /tmp/v8_8PcnYL_43.sh
: ambiguous redirect 1
$
$ scp /tmp/v8_8PcnYL_41.sh evgeniy@Ubuntu-VM2:/tmp/v8_8PcnYL_44.sh >> "/tmp/v8_8PcnYL_42.log" 2>&1
$ cat /tmp/v8_8PcnYL_42.log
$ exit
evgeniy@Ubuntu-VM2:~$ cat /tmp/v8_8PcnYL_44.sh
#!/bin/bash
cd ~/
/opt/mssql-tools/bin/sqlcmd -S CHECK -U sa -P [hidden] -h -1 -b -Q "SELECT name FROM master.dbo.sysdatabases"
exit $?
evgeniy@Ubuntu-VM2:~$
bash ssh scp
1个回答
0
投票

该脚本有 DOS 行结尾。最大的线索是错误消息:

: ambiguous redirect 1

缺少通常位于

:
之前的部分,用于标识生成消息的工具和导致错误的字符串。

请参阅为什么我的工具输出会覆盖自身以及如何修复它?了解有关 DOS 行结尾以及如何修复它们的更多信息。

© www.soinside.com 2019 - 2024. All rights reserved.