如何从bash中的键盘查找用户输入?我在想这样能行,
int b;
scanf("%d", &b);但上面写着
-bash: /-bash/name/.-bash_profile:第17行:
"%d",' -bash: /Users/[name]/.bash\_profile: line 17:扫描意外令牌附近的语法错误(“%d”&b)
编辑
backdoor() {
printf "\nAccess backdoor Mr. Fletcher?\n\n"
read -r b
if (( b == 1 )) ; then
printf "\nAccessing backdoor...\n\n"
fi
}发布于 2012-05-22 00:14:54
只需使用read内置:
read -r b不需要指定类型(按照%d),因为变量不是在shell脚本中键入的,除非您跳过(不必要)循环才能这样做;如果要将值用作十进制值,这是一个计算它的上下文的问题,而不是读取或存储它的方式。
例如:
(( b == 1 ))...treats $b作为小数,而
[[ $b = 1 ]]...does a字符串比较b和"1".
发布于 2012-05-22 00:19:29
虽然您可以在Bash中将变量声明为整数,但是结果不能满足您的期望。一个非整数值将被转换为零,这可能不是你想要的.下面是确保收集整数的一种更好的防弹方法:
while read -p "Enter integer: " integer; do
[[ "$integer" =~ [[:digit:]]+ ]] && break
echo "Not an integer: $integer" >&2
done当您想要通知用户值被拒绝的原因时,这一点尤其有用,而不仅仅是重新提示。
发布于 2012-05-22 00:32:16
你想把C类语法和Bash语法混在一起。
backdoor() {
printf '\n%s\n\n' 'Access backdoor Mr. Fletcher?'
read -r b
if ((b == 1))
then
printf '\n%s\n\n' 'Accessing backdoor...'
fi
}https://stackoverflow.com/questions/10694224
复制相似问题