使用 Shell 在 printf 中显示数字和 %d 之间的数学表达式的结果



我有一个 for 循环,它表示字符串中字母的 ASCII 值。我想对字符串进行加密,因此在显示 ASCII 值时,我想通过添加一个数字来更改它们。这是我的循环;

for (( i=0; i<${#string}; i++ )); do
printf "%d + $numbern" "'${string:$i:1}"
done

例如,我的字符串是:hey,我想添加到ASCII值中的数字是:3

输出是这样的;

104 + 3
101 + 3
121 + 3

但是,我想显示为;

107
104
124

我试图在代码中实现 expr%d + $number,但它不起作用。需要任何帮助

您需要计算生成的表达式才能获得所需的结果。printf打印您要求打印的内容,它不会计算表达式。您可以将结果存储在变量中并打印为:

for ((i = 0; i<${#string}; i++)); do
j=$(printf "%d + $numbern" "'${string:$i:1}")
echo $((j))
done

(( ))执行算术计算 - 有关更多详细信息,请参阅文档。

最新更新