shell程序不显示输入字符的值?

shell程序不显示输入字符的值?,shell,unix,ascii,Shell,Unix,Ascii,我正在从用户输入一个字符,并尝试打印字符的ascii值,如果它的值大于等于97,并且[是shell中的一个命令,也称为test命令 在[和]周围需要空格 此外,为了比较整数,您需要使用 编辑:为了修复,您可以说: read n asc=$(printf "%d" "'$n") [[ "$asc" > 97 ]] && [[ "$asc" < 122 ]] && echo $asc [是shell中的一个命令,也称为test命令 在[和]周围需要空格

我正在从用户输入一个字符,并尝试打印字符的ascii值,如果它的值大于等于97,并且
[
是shell中的一个命令,也称为
test
命令

[
]
周围需要空格

此外,为了比较整数,您需要使用


编辑:为了修复,您可以说:

read n
asc=$(printf "%d" "'$n")
[[ "$asc" > 97 ]] && [[ "$asc" < 122 ]] && echo $asc

[
是shell中的一个命令,也称为
test
命令

[
]
周围需要空格

此外,为了比较整数,您需要使用


编辑:为了修复,您可以说:

read n
asc=$(printf "%d" "'$n")
[[ "$asc" > 97 ]] && [[ "$asc" < 122 ]] && echo $asc

[
是shell中的一个命令,也称为
test
命令

[
]
周围需要空格

此外,为了比较整数,您需要使用


编辑:为了修复,您可以说:

read n
asc=$(printf "%d" "'$n")
[[ "$asc" > 97 ]] && [[ "$asc" < 122 ]] && echo $asc

[
是shell中的一个命令,也称为
test
命令

[
]
周围需要空格

此外,为了比较整数,您需要使用


编辑:为了修复,您可以说:

read n
asc=$(printf "%d" "'$n")
[[ "$asc" > 97 ]] && [[ "$asc" < 122 ]] && echo $asc

像这样的东西会使它:

#!/bin/sh

min=97
max=121
echo "Enter a character"
read n

value=$(printf "%d" "'$n")
printf "The ASCII character of %s is %d.\n" "$n" "$value"

if [ "${value}" -le $min ] && [ "${value}" -le $max ]
then
   printf "%d not in the range.\n" "$value"
else
   printf "%d in the range.\n" "$value"
fi
我改变的事情:
-
printf
而不是
print

-
[“${n}”-ge 97和“${n}”-le 121]
需要将条件拆分为两个块:

   if [ "${n}" -le 97 ] && [ "${n}" -le 121 ]

像这样的东西会使它:

#!/bin/sh

min=97
max=121
echo "Enter a character"
read n

value=$(printf "%d" "'$n")
printf "The ASCII character of %s is %d.\n" "$n" "$value"

if [ "${value}" -le $min ] && [ "${value}" -le $max ]
then
   printf "%d not in the range.\n" "$value"
else
   printf "%d in the range.\n" "$value"
fi
我改变的事情:
-
printf
而不是
print

-
[“${n}”-ge 97和“${n}”-le 121]
需要将条件拆分为两个块:

   if [ "${n}" -le 97 ] && [ "${n}" -le 121 ]

像这样的东西会使它:

#!/bin/sh

min=97
max=121
echo "Enter a character"
read n

value=$(printf "%d" "'$n")
printf "The ASCII character of %s is %d.\n" "$n" "$value"

if [ "${value}" -le $min ] && [ "${value}" -le $max ]
then
   printf "%d not in the range.\n" "$value"
else
   printf "%d in the range.\n" "$value"
fi
我改变的事情:
-
printf
而不是
print

-
[“${n}”-ge 97和“${n}”-le 121]
需要将条件拆分为两个块:

   if [ "${n}" -le 97 ] && [ "${n}" -le 121 ]

像这样的东西会使它:

#!/bin/sh

min=97
max=121
echo "Enter a character"
read n

value=$(printf "%d" "'$n")
printf "The ASCII character of %s is %d.\n" "$n" "$value"

if [ "${value}" -le $min ] && [ "${value}" -le $max ]
then
   printf "%d not in the range.\n" "$value"
else
   printf "%d in the range.\n" "$value"
fi
我改变的事情:
-
printf
而不是
print

-
[“${n}”-ge 97和“${n}”-le 121]
需要将条件拆分为两个块:

   if [ "${n}" -le 97 ] && [ "${n}" -le 121 ]

这是我得到的错误ascii2.sh:3:[:非法数字:a警告:范围内“%d”的mime类型未知--使用“应用程序/八位字节流”警告:a的mime类型未知--使用“应用程序/八位字节流”错误:范围内没有这样的文件“%d”错误:没有这样的文件“a”你想说什么?好吧,这是可以做到的,但是对于这一点,
bash/shell
更好。我认为这种方式很清楚,请随意询问是否有问题。注意,我对代码进行了一点更新,使其更具一般性。这是我收到的错误asci2.sh:3:[:非法数字:警告:范围内“%d”的未知mime类型--使用“应用程序/八位字节流”警告:“a”的mime类型未知--使用“应用程序/八位字节流”错误:范围内没有此类文件“%d”错误:没有此类文件“a”“你想说什么?好吧,这是可以做到的,但是,
bash/shell
更适合这样做。我认为这种方式很清楚,请随意询问是否有问题。注意,我对代码进行了一点更新,使其更具一般性。这是我收到的错误asci2.sh:3:[:非法数字:警告:范围内“%d”的未知mime类型”-使用”“应用程序/八位字节流”警告:“a”的mime类型未知--使用“应用程序/八位字节流”错误:范围内没有此类文件“%d”错误:没有此类文件“a”“你想说什么?好吧,这是可以做到的,但是,
bash/shell
更适合这样做。我认为这种方式很清楚,请随意询问是否有问题。注意,我对代码进行了一点更新,使其更具一般性。这是我收到的错误asci2.sh:3:[:非法数字:警告:范围内“%d”的未知mime类型”-使用”“应用程序/八位字节流”警告:“a”的mime类型未知--使用“应用程序/八位字节流”错误:范围内没有此类文件“%d”错误:没有此类文件“a”“你想说什么?好吧,这是可以做到的,但是
bash/shell
更适合这样做。我认为这种方式非常清楚,请随意询问是否有问题。注意,我对代码进行了一些更新,使其更具一般性。