当 set -x 打开时如何隐藏变量值

当 set -x 打开时如何隐藏变量值

我需要在脚本中使用 set -x 来显示日志中执行的命令

但有一个变量是密码,因此该密码显示在计划文本中

有没有办法只隐藏一个变量?

IE:

脚本:

pas=test123

set -x
mysql -uroot -p$pas

输出:

[root@server1]# ./teste.sh
++ mysql -uroot -ptest123

我想test123从输出中删除。

答案1

创建一个~/.my.cnf

[client]
user=DB_user
password="xxx"

现在,您可以在不使用脚本中的-u和标志的情况下登录。-p

请注意,这不仅仅是set -x脚本的输出有问题,而且在大多数系统上,所有正在运行的进程的命令行参数ps对任何用户都是可见的,这使得在其中传递密码完全不安全。MySQL手册中也提到了这一点在选项下--password

在命令行上指定密码应该被认为是不安全的。为了避免在命令行上提供密码,请使用选项文件。看第 8.1.2.1 节 “密码安全的最终用户指南”

相关内容