🐉

传音入密:试探虚实

🐉

第二十回:韦小宝巧舌如簧,多隆索试探虚实

👱

多大哥,你看这块玉佩(数据)成色如何?能不能帮我传个话(打印)给皇上?还有,我想试试那把火枪(文件)是不是真的。

👳

说话用 echoprintf,前者是大白话,后者是文言文(格式化)。至于试探虚实,就用 test 命令,它能帮你查验文件是否存在、权限是否足够。

📢 狮子吼 (echo)

echo 是最常用的喊话工具。

📜 格式化传音 (printf)

printf 是 C 语言风格的输出,比 echo 更精准,适合对账单。

printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg
printf "%-10s %-8s %-4.2f\n" 韦小宝 男 60.12
printf "%-10s %-8s %-4.2f\n" 建宁 女 45.67

%s 是字符串,%f 是小数,%-10s 意思是左对齐占10个格子。

🕵️‍♂️ 试探虚实 (test)

test 命令用于检查某个条件是否成立,和 [] 是一样的。

🔍 查验文件

  • -e file:文件存在吗?(Exist)
  • -r file:有权读吗?(Read)
  • -w file:有权写吗?(Write)
  • -x file:能执行吗?(Execute)
  • -d file:是目录(文件夹)吗?(Directory)
  • -f file:是普通文件吗?(File)

例子:

if test -e ./secret.txt
then
echo "找到密函了!"
else
echo "密函不见了!"
fi

🖐️ 动手时刻:韦爵爷的验毒试纸

编写脚本 check.sh,检查某个文件是否存在,如果存在,输出它的详细信息。

  1. 编写脚本:
    #!/bin/bash
    filename="poison.txt"
    
    # 先造一个假文件
    touch $filename
    
    echo "正在查验 $filename ..."
    
    if test -e $filename
    then
        echo "发现目标!"
        if test -w $filename
        then
            echo "而且我有权修改它(下毒)!"
        else
            echo "但是只能看,不能动。"
        fi
    else
        echo "目标不存在,安全。"
    fi
    
    # 用 printf 打印个漂亮的报告
    printf "查验结果:%-10s 安全等级:%-5d\n" "通过" 100
                        
  2. 运行: bash check.sh