Android设备CPU调频Shell脚本执行出现[xxx: not found]错误
Android CPU频率设置脚本错误排查与修复
错误原因分析
你遇到的[1248000: not found错误,核心是Shell语法格式问题,同时脚本还有两处细节错误:
- 条件判断语法错误:
if [$bigfreq -ne $littlefreq]; then中,[是Shell内置命令,必须和后续变量之间保留空格;同理]前面也需要加空格。否则Shell会把[$bigfreq当作完整命令查找,导致找不到命令报错。 - 变量名拼写错误:
cpufalf是cpuhalf的笔误,会导致cpuhalfint变量值异常。 - grep命令格式错误:
grep -c ^processor/proc/cpuinfo缺少空格,正确写法是grep -c ^processor /proc/cpuinfo,否则会把路径当作匹配模式,无法正确统计CPU核心数。
修正后的脚本
#!/system/bin/sh # 修正grep命令的空格问题,正确统计CPU核心数 cpucores=$(grep -c ^processor /proc/cpuinfo) cpusint=$((cpucores-1)) littlefreq=$(cat /sys/devices/system/cpu/cpu$cpusint/cpufreq/scaling_max_freq) bigfreq=$(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq) cpuhalf=$((cpucores/2)) # 修正变量名拼写错误 cpuhalfint=$((cpuhalf-1)) # 修正if条件的空格问题,符合Shell语法规范 if [ $bigfreq -ne $littlefreq ]; then for i in $(seq 0 $cpuhalfint); do chmod 0644 /sys/devices/system/cpu/cpu$i/cpufreq/scaling_governor echo "performance" > /sys/devices/system/cpu/cpu$i/cpufreq/scaling_governor chmod 0644 /sys/devices/system/cpu/cpu$i/cpufreq/scaling_min_freq echo $bigfreq > /sys/devices/system/cpu/cpu$i/cpufreq/scaling_min_freq done # 修正循环起始值,避免重复处理同一个核心 for x in $(seq $((cpuhalfint+1)) $cpusint); do chmod 0644 /sys/devices/system/cpu/cpu$x/cpufreq/scaling_governor echo "performance" > /sys/devices/system/cpu/cpu$x/cpufreq/scaling_governor chmod 0644 /sys/devices/system/cpu/cpu$x/cpufreq/scaling_min_freq echo $littlefreq > /sys/devices/system/cpu/cpu$x/cpufreq/scaling_min_freq done else for i in $(seq 0 $cpusint); do chmod 0644 /sys/devices/system/cpu/cpu$i/cpufreq/scaling_governor echo "performance" > /sys/devices/system/cpu/cpu$i/cpufreq/scaling_governor chmod 0644 /sys/devices/system/cpu/cpu$i/cpufreq/scaling_min_freq echo $bigfreq > /sys/devices/system/cpu/cpu$i/cpufreq/scaling_min_freq done fi
额外优化说明
- 把反引号
`替换为$(),这是更现代、可读性更好的命令替换写法。 - 修正第二个循环的起始值,避免重复处理同一核心,优化执行逻辑。
内容的提问来源于stack exchange,提问作者IsHacker
相关产品推荐
相关产品推荐

