bash 脚本中的变量格式检查
Variable formatting check in bash script
我有一个非常简单的脚本来更新基于平面文件的 table,但我担心列表越来越长,将引入无效的格式化变量并导致问题。
#!/bin/bash
OLDIFS=$IFS
IFS=,
file1=file.csv
while read mac loc; do
dbaccess modemdb <<EndOfUpdate 2>/dev/null
UPDATE profile
SET localization= '$loc'
WHERE mac_address = '$mac';
EndOfUpdate
done <"$file1"
IFS=$OLDIFS
文件内容是这样的。
12:BF:20:1B:D3:22,RED-1234
12:BF:20:2D:FF:1B,BLUE-1234
12:BF:20:ED:74:0D,RED-9901
12:BF:20:02:69:7C,GREEN-4321
12:BF:20:02:6B:42,BROWN
12:BF:20:ED:74:0D,BLACK
我遇到的困难是如何设置 $mac 和 $loc 变量的格式检查,以便在它们不匹配时停止 运行。 $loc 可以是任何 19 位数字,所以只需要确保它不为空且不更长。 mac 地址必须不为空且格式与文件中的一样。我在另一个 post 中找到了此检查的参考,但不确定如何集成。
`[[ "$MAC_ADDRESS" =~ "^([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}$" ]]`
寻求有关如何创建验证的帮助。
谢谢,
使用正则表达式检查 MAC 地址:
#!/bin/bash
file1=file.csv
while IFS="," read mac loc; do
if [[ "$mac" =~ ^([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}$ ]]; then
dbaccess modemdb <<EndOfUpdate 2>/dev/null
UPDATE profile
SET localization= '$loc'
WHERE mac_address = '$mac';
EndOfUpdate
else
echo "Error: $mac"
fi
done <"$file1"
如果使用引号,则您的正则表达式 bash 仅适用于字符串。
我有一个非常简单的脚本来更新基于平面文件的 table,但我担心列表越来越长,将引入无效的格式化变量并导致问题。
#!/bin/bash
OLDIFS=$IFS
IFS=,
file1=file.csv
while read mac loc; do
dbaccess modemdb <<EndOfUpdate 2>/dev/null
UPDATE profile
SET localization= '$loc'
WHERE mac_address = '$mac';
EndOfUpdate
done <"$file1"
IFS=$OLDIFS
文件内容是这样的。
12:BF:20:1B:D3:22,RED-1234
12:BF:20:2D:FF:1B,BLUE-1234
12:BF:20:ED:74:0D,RED-9901
12:BF:20:02:69:7C,GREEN-4321
12:BF:20:02:6B:42,BROWN
12:BF:20:ED:74:0D,BLACK
我遇到的困难是如何设置 $mac 和 $loc 变量的格式检查,以便在它们不匹配时停止 运行。 $loc 可以是任何 19 位数字,所以只需要确保它不为空且不更长。 mac 地址必须不为空且格式与文件中的一样。我在另一个 post 中找到了此检查的参考,但不确定如何集成。
`[[ "$MAC_ADDRESS" =~ "^([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}$" ]]`
寻求有关如何创建验证的帮助。
谢谢,
使用正则表达式检查 MAC 地址:
#!/bin/bash
file1=file.csv
while IFS="," read mac loc; do
if [[ "$mac" =~ ^([0-9a-fA-F]{2}:){5}[0-9a-fA-F]{2}$ ]]; then
dbaccess modemdb <<EndOfUpdate 2>/dev/null
UPDATE profile
SET localization= '$loc'
WHERE mac_address = '$mac';
EndOfUpdate
else
echo "Error: $mac"
fi
done <"$file1"
如果使用引号,则您的正则表达式 bash 仅适用于字符串。