第一命令
RELAY_MASTER_LOG_FILE=$(mysql -uroot -p1234 -e 'show slave status \G'| grep 'Relay_Master_Log_File' |cut -d: -f2|tr -d " ")echo $RELAY_MASTER_LOG_FILE结果
node-bin.000002(变量值之前没有空格)
但是当我试图执行这个命令时
SET_REPLICATION_PARAMS="MASTER_LOG_FILE='$RELAY_MASTER_LOG_FILE'"我得到了这个结果
MASTER_LOG_FILE=' node-bin.000002'变量值之前有一个空格。
发布于 2022-02-04 06:40:10
echo $var首先扩展变量var,然后输出结果单词,用空格分隔,然后是换行符。因此,如果存在前尾空格,echo会吃掉它们,因为它们位于第一个/最后一个单词之前/之后。如果要保留空格,请双引号变量展开,以生成一个单词,包括空格:
$ a=' node-bin.000002`
$ echo $a
node-bin.000002
$ echo "$a"
node-bin.000002如果要从变量值中移除前导空间,请使用模式替换:a="${a# }"。示例:
$ a=' node-bin.000002`
$ b="MASTER_LOG_FILE='$a'"
$ echo "$b"
MASTER_LOG_FILE=' node-bin.000002'
$ a="${a# }"
$ b="MASTER_LOG_FILE='$a'"
$ echo "$b"
MASTER_LOG_FILE='node-bin.000002'https://stackoverflow.com/questions/70981095
复制相似问题