【发布时间】:2013-03-16 00:10:59
【问题描述】:
如何在 bash shell 中查找来自键盘的用户输入?我在想这会行得通,
int b;
scanf("%d", &b);
但它说
-bash: /Users/[name]/.bash_profile: line 17: 意外标记 `"%d",' 附近的语法错误
-bash: /Users/[name]/.bash_profile: line 17: `scanf("%d", &b);'
编辑
backdoor() {
printf "\nAccess backdoor Mr. Fletcher?\n\n"
read -r b
if (( b == 1 )) ; then
printf "\nAccessing backdoor...\n\n"
fi
}
【问题讨论】:
-
我很好奇——什么文档或其他上下文导致尝试在 shell 脚本中使用 C 库函数?
-
我是一个菜鸟程序员,我从学习LUA开始,离开了一年,然后开始学习C,然后今天才开始尝试学习bash。
-
你也不需要声明你的变量——
int b可以省略,结尾处的分号也可以。我建议从头开始使用 mywiki.wooledge.org/BashGuide 之类的东西,而不是假设来自完全不同语言的语法适用于 bash。 -
@CharlesDuffy 回复“什么上下文导致尝试在 shell 脚本中使用 C 库函数?”:嗯,有一个
printf内置函数! -
@CharlesDuffy 当然可以。我只是概述了一个可能的思路,这可能会导致 bash 中有一个
scanf的假设。事实上,我来到这个页面是因为我搜索了“bash scanf”;我正在尝试用最少的子进程集解析一个字符串。甚至有许多内置的 bash 字符串操作函数可以用来代替scanf。也不太清楚如何实现scanf目标变量的按引用语义。但仍然:没有scanf的printf是明显的不对称:-)。