目前,我正在努力让 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
Run Code Online (Sandbox Code Playgroud)
第一个变量var应该保存旋转文件的值。Asks0适用于 SSD,1适用于 HDD。
第二个变量var1检查您的机器中是否存在虚拟化。如果它持有的数字是0,则vtype设置为no,如果是其他数字,则vtype设置为yes。如果我在不同的代码文件上执行这些命令,则它们可以完美运行。但我需要他们在一起。有什么建议?
Kus*_*nda 12
这个脚本有四个主要问题:
该#!顶部直插丢失。据我所知,这可以是#!/bin/sh。
变量扩展不加引号。使用双引号避免分词和文件名通配。例如,if [ "$var" = 0 ]。在这里您也可以选择使用-eq代替,=因为您正在进行算术测试。
作业周围不能有空格=。
的第一个参数printf应该是格式字符串,例如printf '%s %s\n' "$dtype" "$vtype"。
这些东西可以使用ShellCheck 站点找到。
还有一个小效率低下:
lsmod | grep kvm | awk 'NR==1{print $3}' 2>/dev/null
Run Code Online (Sandbox Code Playgroud)
几乎可以等价地写成,
lsmod | awk '/kvm/ { print $3; exit }'
Run Code Online (Sandbox Code Playgroud)
我不确定您为什么在某些变量的值中放置空格,例如dtype=' HDD '.
| 归档时间: |
|
| 查看次数: |
751 次 |
| 最近记录: |