gpt4 book ai didi

c - Ubuntu $(dollar) 符号是一种转义文本。为什么?解决方法?

转载 作者:行者123 更新时间:2023-11-30 15:12:03 24 4
gpt4 key购买 nike

我用 C 编写了一段基本代码来判断密码是否安全。它根据密码是否安全返回 0 或 1。当我在 ubuntu 中传递命令行参数时,它工作正常,除非密码包含 $ 符号。因此我编写了一个程序来输出所有参数,它是这样的:

./a.out abc pqr stu $vwx x$yz ab$c
0 -> ./a.out
1 -> abc
2 -> pqr
3 -> stu
4 -> x
5 -> ab
6 -> def$

但这有效:

./a.out  abc pqr stu \$vwx x\$yz ab\$c def\$
0 -> ./a.out
1 -> abc
2 -> pqr
3 -> stu
4 -> $vwx
5 -> x$yz
6 -> ab$c
7 -> def$

为什么会发生这种情况?是否有其他方法可以避免它(以便它适用于类似 ./a.out $abc 而不是给出段错误。)

最佳答案

美元符号是shell用来扩展环境变量的,与你的程序无关。

当您使用 \$ 时,您会转义美元字符,因此 shell 不会将其用于变量扩展。您还可以将参数放在单引号内,例如

$ ./a.out abc pqr stu '$vwx' 'x$yz' 'ab$c'

关于c - Ubuntu $(dollar) 符号是一种转义文本。为什么?解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35251541/

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