Bash Shell 语法大全

注意事项 第一行shebang机制:#!/bin/bash (注意!不要写成 “#!/bin/bash/",这是一个文件而不是文件夹) #!/usr/bin/env bash 和 #!/bin/bash 有什么区别 #!/usr/bin/env bash 和 #!/bin/bash 都是在 Linux 和 Unix 系统中用于指定脚本解释器的特殊注释。 #!/usr/bin/env bash 表示使用环境变量中的 bash 解释器来执行脚本。也就是说,它会在 PATH 环境变量中查找名为 “bash” 的解释器,并使用第一个找到的解释器来执行脚本。这种方式的好处是不需要指定具体的解释器路径,因为它会在 PATH 中查找,从而使脚本更具可移植性。 而 #!/bin/bash 则直接指定了 bash 解释器的绝对路径为 /bin/bash 来执行脚本。这种方式较为明确,但可能在某些系统中找不到该路径,因此可移植性较差。 综上所述,如果您希望编写可移植的脚本,并且不希望受到特定解释器路径的限制,那么使用 #!/usr/bin/env bash 是更好的选择。而如果您知道您的脚本将在特定的系统中运行,并且该系统上有 bash 解释器的确切路径,则可以使用 #!/bin/bash。 变量引用时加{},以防和其他字符串混淆:${var} 别名在脚本中无效 脚本名通常以.sh为结尾后缀 条件判断中,变量建议用引号引起来:[ “$VAR_NAME” ] Shebang 机制(也称为 hashbang、sharpbang 或者 poundbang)是一种用于在类 Unix 操作系统中指定脚本解释器的方法。它使用 #! 符号作为特殊字符序列来告诉操作系统应该使用哪个解释器来解释脚本。 具体来说,shebang 机制指定了脚本文件的第一行,该行以 #! 开头,后面紧跟a’1着解释器的路径。例如,以下是一个 Bash 脚本的 shebang 行: #!/bin/bash 这个 shebang 行告诉操作系统使用 /bin/bash 解释器来解释这个脚本文件。当你在终端上执行这个脚本时,操作系统会自动找到该解释器并使用它来执行脚本。 ...

2025年7月7日 · 4 分钟 · 阿征

域名解析测试脚本

域名检查脚本 这个shell脚本用于批量检查域名列表中的每个域名是否能够被解析,并输出可解析域名的IP地址。 使用方式 准备一个包含域名列表的文本文件,每行一个域名,空行和以#开头的行将被忽略。 执行脚本并将文件路径作为参数传递:./check_domains.sh /path/to/domains.txt3. 脚本将输出每个可解析域名及其对应的IP地址。 脚本代码 #!/bin/bash # 检查是否提供了文件 if [ $# -eq 0 ]; then echo "请提供一个包含域名的文件作为参数" exit 1 fi # 读取域名列表文件 domain_file=$1 # 检查文件是否存在 if [ ! -f "$domain_file" ]; then echo "文件 $domain_file 不存在" exit 1 fi # 遍历域名列表 while IFS= read -r domain; do # 跳过空行和以#开头的注释行 if [[ -z "$domain" || "$domain" =~ ^# ]]; then continue fi # 使用nslookup测试域名解析并提取IP地址 result=$(nslookup "$domain" 2>/dev/null) # 根据nslookup返回的状态码判断是否能解析 if [ $? -eq 0 ]; then # 提取IP地址 ip=$(echo "$result" | awk '/^Address: / {print $2}') echo "$domain 能被解析,IP地址: $ip" fi done < "$domain_file" 示例 假设你有一个文件domains.txt,内容如下: ...

2025年3月11日 · 1 分钟 · 阿征