将 Powershell 中的变量扩展为 Linux 命令

Expanding variables in Powershell, to Linux commands

在以下 Powershell 脚本中:

$Project_number = Read-Host -Prompt 'Input your Project Name ie. 02XXX'
$Project_code = Read-Host -Prompt 'Input your Project Code in capita letters ie. CRE'

plink -load profile1 -batch 'setfacl -Rm d:g:user1:rwX,g:user1:rwX "/FILES/projects/$Project_number $Project_code" && find "/FILES/projects/$Project_number $Project_code" -maxdepth 1 -exec setfacl -m d:g:user1:r-X,g:user1:r-X {} \;'

如何使 plink(通过 SSH 连接到 Linux 文件服务器)扩展变量 $Project_number$Project_code 在 plink 命令中。

目前他们没有,我收到错误消息:

plink : setfacl: /FILES/projects/ : No such file or directory

如果我手动输入它们,它会起作用,因此它必须符合我的语法。

谢谢

我看到下面的 link 在 $Project_number 和 $Project_code

之间有空格
plink -load profile1 -batch 'setfacl -Rm d:g:user1:rwX,g:user1:rwX "/FILES/projects/$Project_number $Project_code" && find "/FILES/projects/$Project_number $Project_code" -maxdepth 1 -exec setfacl -m d:g:user1:r-X,g:user1:r-X {} \;'

你试过没有那些空格吗?

谢谢我弄明白了,只需要使用双引号,删除 setfacl 路径上的引号并转义 space。像这样:

plink -load profile1 -batch "setfacl -Rm d:g:user1:rwX,g:user1:rwX /FILES/projects/$Project_number\ $Project_code && find /FILES/projects/$Project_number\ $Project_code -maxdepth 1 -exec setfacl -m d:g:user1:r-X,g:user1:r-X {} \;"