我有以下有效的 bash
export READ=$(cat /opt/TOKEN.txt);echo "initial_token: $READ" >> cassandra.yaml
我需要逃避这一点,以便它正确地通过 ssh 运行,所以我尝试了以下
ssh host 'export READ=\$(cat /opt/TOKEN.txt);echo \"initial_token: \$READ\" >> cassandra.yaml'
产生错误
bash: -c: line 0: syntax error near unexpected token `('
bash: -c: line 0: `export READ=\$(cat /opt/TOKEN.txt);echo \"initial_token: \$READ\" >> cassandra.yaml'
也
ssh host 'export READ=\$\(cat /opt/TOKEN.txt\);echo \"initial_token: \$READ\" >> cassandra.yaml'
产生错误
bash: line 0: export: `/opt/TOKEN.txt)': not a valid identifier
有人知道如何摆脱这种情况吗?谢谢,Dean
答案1
你转义得太多 – bash 已经不再解释单引号字符串了:
ssh host 'READ=$(< /opt/TOKEN.txt); echo "initial_token: $READ" >> cassandra.yaml'
答案2
啊,这真是太酷了。我刚刚发现这个,所以我不需要担心逃避任何事情……
ssh user@serverB <<\EOF
your sql query....
.....
.....
EOF