scanf相当于Bash?

Nig*_*k32 4 bash terminal scanf

如何从bash shell中的键盘查找用户输入?我以为这会起作用,

int b;

scanf("%d", &b);
Run Code Online (Sandbox Code Playgroud)

但它说

-bash:/Users/[name]/.bash_profile:第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   
}
Run Code Online (Sandbox Code Playgroud)

Cha*_*ffy 7

只需使用read内置:

read -r b
Run Code Online (Sandbox Code Playgroud)

不需要指定类型(按照%d),因为变量不会在shell脚本中输入,除非你跳过(不必要的)箍来制作它们; 如果你想将一个值用作十进制,那就是它被评估的上下文的问题,而不是它被读取或存储的方式.

例如:

(( b == 1 ))
Run Code Online (Sandbox Code Playgroud)

......视为$b小数,而

[[ $b = 1 ]]
Run Code Online (Sandbox Code Playgroud)

... 在b和b之间进行字符串比较"1".