目前,我正在努力让 2 个代码在我的 bash 脚本中工作。它们都单独工作,但是一旦它们都在代码中,它们就不会了。
var=$(cat /sys/block/vda/queue/rotational 2>/dev/null || cat /sys/block/sda/queue/rotational 2>/dev/null)
dtype='nil'
if [ $var = 0 ]; then
dtype=' SSD '
elif [ $var = 1 ]; then
dtype=' HDD '
fi
var1=$(lsmod | grep kvm | awk 'NR==1{print $3}' 2>/dev/null)
vtype = 'no'
if [ $var1 = 0 ]; then
vtype=' no '
else
vtype = 'yes'
fi
printf '$dtype' '$vtype'
echo $dtype $vtype
第一个变量var
应该保存旋转文件的值。Asks0
适用于 SSD,1
适用于 HDD。
第二个变量var1
检查您的机器中是否存在虚拟化。如果它持有的数字是0
,则vtype
设置为no
,如果是其他数字,则vtype
设置为yes
。如果我在不同的代码文件上执行这些命令,它们可以完美运行。但我需要他们两个在一起。有什么建议么?
这个脚本有四个主要问题:
#!
顶部的 - 行不见了。据我所知,这可以#!/bin/sh
。变量扩展不加引号。使用双引号来避免分词和文件名通配符。例如,
if [ "$var" = 0 ]
。在这里你也可以选择使用-eq
代替,=
因为你正在做一个算术测试。作业不能有空格
=
。的第一个参数
printf
应该是格式字符串,例如printf '%s %s\n' "$dtype" "$vtype"
.这些东西可以使用ShellCheck 站点找到。
还有一个小的低效率:
可以写成,几乎等价,
我不确定您为什么在某些变量的值中放置空格,例如
dtype=' HDD '
.