比较两个bash变量

Man*_*iAm 1 bash

我试图编写一个简单的Bash脚本,显示两个变量之间的差异,假设两个变量包含具有不同值的相同参数.看看$sam和$pish变量.他们是一样的,只是参数driver_mode是1在$sam和2中$pish.为了进行这种比较,我将每个变量存储到一个单独的数组中,然后逐个比较每个元素.

#!/bin/bash

sam="driver_mode=2 firmware_path=/home/release/firmware/ onebox_zone_enabled=0x10001 ta_aggr=4 skip_fw_load=0 fw_load_mode=1 sdio_clock=40000 enable_antenna_diversity=0 coex_mode=1 obm_ant_sel_val=2 wlan_rf_power_mode=0 bt_rf_power_mode=0 zigb_rf_power_mode=0 country_code=840  bt_rf_tx_power_mode=1 bt_rf_rx_power_mode=0"

pish="driver_mode=1 firmware_path=/home/release/firmware/ onebox_zone_enabled=0x10001 ta_aggr=4 skip_fw_load=0 fw_load_mode=1 sdio_clock=40000 enable_antenna_diversity=0 coex_mode=1 obm_ant_sel_val=2 wlan_rf_power_mode=0 bt_rf_power_mode=0 zigb_rf_power_mode=0 country_code=840  bt_rf_tx_power_mode=1 bt_rf_rx_power_mode=0"

read -r -a array_old <<< "$sam"

read -r -a array_new <<< "$pish"

for index in "${!array_old[@]}"; do
    if [[ ${array_old[index]} -ne ${array_new[index]} ]]; then
        echo ${array_old[index]} 'to' ${array_new[index]}     
    fi
done
Run Code Online (Sandbox Code Playgroud)

运行上面的bash脚本给我错误:

./test:第12行:firmware_path =/home/release/firmware /:语法错误:操作数预期(错误标记为"/ home/release/firmware /")

Rus*_*nov 5

该-ne操作员是一个整数比较运算符.要比较字符串使用!=:

for index in "${!array_old[@]}"; do
  if [[ ${array_old[index]} != "${array_new[index]}" ]]; then
    echo ${array_old[index]} 'to' ${array_new[index]}     
  fi
done
Run Code Online (Sandbox Code Playgroud)