bash:如何避免扩展变量等?

bash:如何避免扩展变量等?

抱歉,这个话题有些模糊。我所追求的是一种ssh在将我的首选配置文件复制到服务器的同时连接到服务器的方法。一般的想法是执行类似 的操作ssh -t [server] "cat a_profile > .bashrc;bash -li",我已将其扩展a_profile为此处的文档:

function ssh
{
  h=$1
  /usr/bin/ssh -t $h "cat >.bashrc <<!
unalias -a
alias ll='ls -lpN'
set -o vi
export LESS=X
if [ "`id -u`" -eq 0 ]
then
  export PS1="\"'\\h # '\""
else
  export PS1="\"'\\h $ '\""
fi
export AWS_ACCESS_KEY=AKEY
export AWS_SECRET_KEY=ASECRETKEY

function ssh
{
  h="'\$1'"
  /usr/bin/scp ~/.bashrc "'\$h'":.bashrc
  /usr/bin/scp ~/.vimrc "'\$h'":.vimrc
  /usr/bin/ssh -A "'\$h'"
}

function ,
{
  sudo bash --init-file /home/jan/.bashrc
}
!
bash -li
"
}

它似乎可以工作,只是当我调用该函数时会评估if [ "id -u部分,因此测试读取。无论如何,我认为我需要处理引号,它们不可能是健康的,像那样嵌套。关于如何让它工作有什么想法吗?" -eq 0 ]sshif 1000 -eq 0 ]

答案1

看起来您希望接收主机评估 id -u。您需要确保它完好无损地到达。

"\"id -u\""

这应该给你的本地 bash 一组要吞下的引号,但不让它吞噬该命令。

相关内容