我正在编写一个脚本,启动ssh会话,然后在远程服务器上执行屏幕截图,脚本如下所示。
numbah="$1"
. . . .
# Taking the screenshot
ssh -x ${INPUT_USER}@nano-machine /bin/bash <<- EOF
cd /tmp
mkdir --parents -- temp_img && cd -- $_
DISPLAY=:0 scrot "Screenshot-${numbah}_%d-%m-%Y.png"
echo "first arg is $1 $1 $1"
EOF代码块似乎产生了一个错误,导致scrot失败。
/bin/bash: line 2: cd: /bin/bash: Not a directory但是如果我引用EOF的话,就不会有任何错误--除了变量不会扩展,这对这个脚本至关重要。
如何在保持变量完整/可扩展的同时消除错误?
发布于 2020-01-07 10:55:35
如何在保持变量完整/可扩展的同时消除错误?
禁用此特定变量的展开。记住引号。
ssh -x ${INPUT_USER}@nano-machine /bin/bash <<- EOF
cd /tmp
mkdir --parents -- temp_img && cd -- "\$_"
DISPLAY=:0 scrot "Screenshot-${numbah}_%d-%m-%Y.png"
echo "first arg is $1 $1 $1"
EOF但我确实发现,对于复杂的脚本,将数据作为参数传递更容易,而且脚本根本不展开:
ssh -x ${INPUT_USER}@nano-machine /bin/bash -- "$numbah" <<-'EOF'
cd /tmp
mkdir --parents -- temp_img && cd -- "$_"
DISPLAY=:0 scrot "Screenshot-${1}_%d-%m-%Y.png"
echo "first arg is $1 $1 $1"
EOFhttps://stackoverflow.com/questions/59626775
复制相似问题