我试图编写一个简单的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 /")
该-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)