【发布时间】:2019-03-18 23:46:23
【问题描述】:
当我在命令行运行它时,它可以正常工作
awk 'BEGIN{FS=OFS=","}/^AAA/{$3="QQQ"}1' test.txt > newtest.txt
但是,当我尝试在 SSH 连接到远程服务器的 bash 脚本中运行它时,它会因语法错误而失败,但我看不到它失败的地方。看起来它正在指向命令中的 FS。
我正在做以下事情:
sshpass -p "password" ssh user@192.168.0.1 /bin/bash << EOF
echo password | sudo -u root -S awk 'BEGIN{FS=OFS=","}/^AAA/{$3="QQQ"}1' test.txt > newtest.txt
EOF
SSH 连接工作正常,但 awk 命令失败。 任何想法如何解决这个问题?
谢谢
【问题讨论】:
-
顺便说一句,这是一个有趣的命令——你显然不需要
sudo来打开newtest.txt(因为打开是在运行sudo之前由你的 shell 完成的),所以你所有的'正在升级权限是读取test.txt。但是,如果test.txt对安全非常敏感,只有 root 才能读取它,那你为什么要将派生自它的东西存储在特权较低的帐户下呢?