在远程服务器上执行BASH执行命令

时间:2019-03-29 16:56:25

标签: arrays bash ssh

我想执行一条命令,该命令返回存在的所有用户主目录并将结果存储到bash变量中

res=$(ssh -q -o LogLevel=error user@server << 'EOF' 
t=$(awk -F':' '{ if ( $3 >= 500 ) print $1 }' /etc/passwd)
readarray -t res_array <<< "${t}"
UHOME="/home"
for u in "$res_array"
do
  _dir="${UHOME}"/"${u}"
  if [[ -d "$_dir" ]]
then
    echo "$u"
  fi
done
EOF
)

代码在本地有效,但在远程服务器上无效 我使用echo $ u存储家庭用户存在的结果到变量:(

1 个答案:

答案 0 :(得分:0)

执行此操作:

res=$(ssh -q -o LogLevel=error user@server << 'EOF' 
t=$(awk -F':' '{ if ( $3 >= 500 ) print $1 }' /etc/passwd)
readarray -t res_array <<< "${t}"
UHOME="/home"
for u in "${res_array[@]}" # change this line
do
  _dir="${UHOME}"/"${u}"
  if [[ -d "$_dir" ]]
then
    echo "$u"
  fi
done
EOF
)