命令

  • echo
  • read
  • 引号
    • "$var" 读取变量var的值
    • '$var' 整个 \(\$\)var 被当作字符串

环境变量

  • 脚本执行前,默认会初始化的一些变量,命名全大写
$HOME 当前用户的家目录,可以用export在命令行里修改,关闭终端界面即可重置
$PATH 以冒号分隔的用来搜索命令的目录列表
$PS1 $PS2 $PS3 $PS4  几种系统默认的提示符,用的时候看
$IFS 输入域分隔符。当Shell 读取输入时,它给出用来分隔单词的一组字符,一般是“空格”和“换行符”
'$0' Shell 脚本的名字
'$#' 传递给脚本的参数个数,如果没有创建参数变量,这个环境变量也一直存在,且默认值为0
'$$' Shell 脚本的进程号,脚本程序通常会用它来生成一个唯一的临时文件,如/tmp/tmpfile

参数变量

  • 位置参数:
    $1, $2, $3, ...
#!/bin/bash
# script.sh
echo "第一个参数: $1"
echo "第二个参数: $2"
echo "第三个参数: $3"

# 执行
$ ./script.sh apple banana orange
# 输出:
# 第一个参数: apple
# 第二个参数: banana
# 第三个参数: orange
  • 注意区分
$* :将所有参数视为一个整体
$@ :将每个参数视为独立个体
#!/bin/bash
# test.sh
count=0
echo "使用 \$*:"
for arg in "$*"; do
    ((count++))         # 语法要求
    echo "参数: $arg"
    echo "循环次数:$count"
done

# 执行
  ./count1.sh a b "c d" e
# 输出:
# 使用 $*:
# 参数: a b c d e
# 循环次数:1
#!/bin/bash
# count2.sh
echo "使用 \$@:"
count=0
for arg in "$@";do
        ((count++))
        echo "参数:$arg"
        echo "循环次数:$count"
done

# 执行
  ./count2.sh a b "c d" e
# 使用 $@:
# 参数:a
# 循环次数:1
# 参数:b
# 循环次数:2
# 参数:c d
# 循环次数:3
# 参数:e
# 循环次数:4
posted on 2026-01-29 09:34  中年二班  阅读(3)  评论(0)    收藏  举报