arrays - BASH 在远程服务器上执行命令
问题描述
我想执行一个命令,该命令返回所有存在的用户主目录并将结果存储到 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 将结果存储在家庭用户存在到变量中:(
解决方案
做这个:
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
)
推荐阅读
- sql - 使用来自其他表的属性以及新属性创建表
- python - 在 Tkinter 中绑定到一个键的“移动对象”功能一次只能使一个对象移动,如何使多个对象同时移动?
- javascript - 如何执行函数来更新 json 源
- angularjs - 如何使用 angularjs 制作动态(可变)内容?
- javascript - 查找列的总和
- node.js - 如何返回路由中指定的所有“数据”匹配查询参数
- excel - 如何根据三列以正确的顺序对数据列表进行排序?
- php - Laravel Eloquent 更新不更新一个字段
- javascript - 如何在 javascript 和 vimeo api 中创建无尽的视频自动播放?
- swift - 仅当组序列不跟随时才使用正则表达式?