gpt4 book ai didi

linux - "echo -e"在 su -c 命令中不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 09:23:20 24 4
gpt4 key购买 nike

我正在尝试执行以下操作:

su username -c "echo -e "test 1""

当我这样做时,它输出:

-e test

如果我尝试这样做:

su username -c "echo -e 'test 1'"

输出:

-e test 1

试过这个:

su username -c 'echo -e "test 1"'

输出:

-e test 1

我怎样才能让它工作,以便输出不带 -e 转义标志的字符串?

最佳答案

首先,您的引述没有按照您希望的方式嵌套。要解决这个问题可能看起来像:

su username -c 'echo -e "test 1"'

……或者……

su username -c "echo -e \"test 1\""

如果您想保证子 shell 是 bash(默认情况下以您期望的方式支持 echo -e),请考虑:

su username -c 'bash -s' <<'EOF'
echo -e "test 1"
EOF

其次,不能保证 echo 会提供 -e 选项(在符合 the relevant standard 的 echo 上,echo -e 将在其输出中打印 -e),因此您的代码不应依赖于此类可用参数。

POSIX 等同于 bash 的 echo -e(当启用时,它并不总是)是 printf '%b':

su username -c "printf '%b\n' 'test 1'"

...如果您实际上不想要 -e 的行为(在内容中插入反斜杠转义,而不是单独在格式字符串中),请使用 %s 而不是 %b

关于linux - "echo -e"在 su -c 命令中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39534828/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com