如何在bash中正确执行此循环?

use*_*637 2 linux bash

#!/bin/bash

f=1
c=$1
while [[ $c != 0 ]]
do
        $f=$(($c*$f))
        $c=$(($c-1))
done
echo $c
Run Code Online (Sandbox Code Playgroud)

我一直在收到错误

./process.sh: line 8: 1=0: command not found
./process.sh: line 7: 5=5: command not found
Run Code Online (Sandbox Code Playgroud)

跑步时 ./process.sh 5

And*_*ite 5

$意思是"价值",因此$f被评价为字符串文字1.所以...

    $f=$(($c*$f))
    $c=$(($c-1))
Run Code Online (Sandbox Code Playgroud)

应该

    f=$(($c*$f))
    c=$(($c-1))
Run Code Online (Sandbox Code Playgroud)