需要解释 bash 脚本中使用的某些变量

  • 本文关键字:变量 解释 bash 脚本 bash
  • 更新时间 :
  • 英文 :


简单的bash脚本,用于从IP和网络掩码生成子网,这是我在谷歌搜索后得到的。它如下

#!/bin/bash
sub_net()
{
A=$1
B=$2
OFS=$IFS
IFS="."
set ${A:-0.0.0.0}
A1=${1:-0}
A2=${2:-0}
A3=${3:-0}
A4=${4:-0}
IFS="."
set ${B:-0.0.0.0}
B1=${1:-0}
B2=${2:-0}
B3=${3:-0}
B4=${4:-0}
IFS=$OFS
C4=$(( B4 & A4 ))
C3=$(( B3 & A3 ))
C2=$(( B2 & A2 ))
C1=$(( B1 & A1 ))
echo ${C1}.${C2}.${C3}.${C4}
}
sub_net 181.172.0.111 255.255.255.0

我知道它用于字段分隔符的IFS用法,但在大约第 8 行处,代码set ${A:-0.0.0.0}编写的,所以它有什么用。对于调试,我只是评论该行,但出现以下错误

./script.bash: line 33: 255.255.255.0: syntax error: invalid arithmetic operator (error token is ".255.255.0")

谁能解释它的用法?

行:

set ${A:-0.0.0.0}

将设置位置参数。 既然你说过:

IFS="."

在此之前,这意味着如果变量A123.42.10.42则设置位置参数123421042,可以使用$1$2、... (事实上,你可以看到那些被用来设置其他变量:A1A2、...


关于${A1:-0}表示法,你可以在 Shell 参数扩展中阅读它:

${parameter:-word}

如果参数未设置或为 null,则替换单词的扩展。否则,将替换参数的值。

相关内容

  • 没有找到相关文章

最新更新