【问题标题】:Escaping character from Windows to WSL将字符从 Windows 转义到 WSL
【发布时间】:2018-10-16 15:54:11
【问题描述】:

我正在尝试发送以下行:

trap 'test -n "$SSH_AUTH_SOCK" && eval `/usr/bin/ssh-agent -k`' 0

从 Windows 到 WSL 的文件。

这是我到目前为止所得到的:

bash -c "echo -e 'trap test -n \"\$SSH_AUTH_SOCK\" && eval \`/usr/bin/ssh-agent -k\` 0'  >> $HOME/test"

我找不到引用陷阱参数的方法。提前感谢您的帮助。

【问题讨论】:

  • WSL 和 Windows 在同一台服务器上。你不能直接编辑文件或者至少删除bash -c并直接调用echo吗?
  • @WalterA 这就是我一开始所做的(使用 ifstream/c++),但是创建的文件搞砸了权限和所有者,chmod 似乎没有修复它。根据 Rich Turner it is not recommended to so
  • 题外话,习惯:1.花括号,如${SSH_AUTH_SOCK}。 2. 使用$(some_comand) 调用子命令,避免转义或嵌套反引号的问题。 3.不要调用文件test,那是shell命令!
  • 我不明白 Rich 的所有评论,大多数问题似乎与符号链接有关。也许将文件发送到像C:\transfer\mytrap.sh 这样的固定路径会更好。也许也可以从 ifstream/c++ 中获得。

标签: bash windows-subsystem-for-linux quotation-marks


【解决方案1】:

我的一位同事找到了解决方案:使用函数

bash -c "echo -e 'onexit() { test -n \"\$SSH_AUTH_SOCK\" && eval \`/usr/bin/ssh-agent -k\`; }' > $HOME/testA"
bash -c "echo -e trap onexit 0  >> $HOME/testA"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 2023-01-21
    • 2017-10-04
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多