本文共 2478 字,大约阅读时间需要 8 分钟。
[1] 注释
# 单行注释:'多行注释,这是第一个注释,这是第二个注释,这是第三个注释'
[2] 输出
echo "Hello World!"
[3] 变量
# 全局变量定义:mynum=1315# 数字mystr="hello world"# 字符# 局部变量定义local mystr="abc"mystr+=123 # 最终结果为"abc123"
[4] 访问变量
# 使用 $variable_name,{} 用于显示更清晰的边界mynum=123code="abc"mystr=${code} # 将 mystr 从 "abc" 增长为 “abc123”echo "Before: ${mystr}"mystr+=${mynum}echo "After: ${mystr}" [5] 数组
# 定义数组myarray=()myarray=("three" 1 "five" 0)# 设置值myarray[2]="eight"myarray[5]="!"# 打印不同结果echo "${myarray[0]}" # 显示第一个项目echo "${myarray[@]}" # 获取整个数组,最常用于 for 循环echo "${#myarray[@]}" # 获取项目数量echo "${!myarray[@]}" # 获取项目的索引 [6] 字符串
#!/bin/bashmylongstr="this is a long string"# 初始化echo "My string: ${mylongstr}"# 空行echo ""# 打印字符串的长度echo "Number of characters in string: ${#mylongstr}"# 空行echo ""# 将字符串按空格分割并打印为数组echo "Splitting my string like an array:"for word in ${mylongstr[@]}; do echo "${word}"done [7] 算术
#!/bin/basha=2b=3mysum=$((a + b)) # 算术操作必须使用双括号!echo "Sum of a=${a} and b=${b} is ${mysum}" [8] 条件语句
#!/bin/bashA=1if [ $((A)) -eq 0 ]; then echo "A equals to 0"elif [ $((A)) -gt 0 ]; then echo "A is greater than 0"else echo "A is smaller than 0"fi
#!/bin/bashmystr="This is an OS course"if [ -z "${mystr}" ]; then echo "Ops... the string is empty."else echo "The string is not empty."fi #!/bin/bashif [ -f example.txt ]; then echo "File example.txt exists."else echo "Ops... example.txt does not exist."fi
[9] 表格以下是常用shell脚本操作符及其说明:
| 操作符 | 描述 |
|---|---|
| -eq | 返回两个数字是否相等。如果是,表达式为真。 |
| -ne | 返回两个数字是否不等。如果是,表达式为真。 |
| -lt | 返回数字a小于数字b。如果是,表达式为真。 |
| -gt | 返回数字a大于数字b。如果是,表达式为真。 |
| -le | 返回数字a小于或等于数字b。如果是,表达式为真。 |
| -ge | 返回数字a大于或等于数字b。如果是,表达式为真。 |
| == | 返回两个字符串是否相等。如果是,表达式为真。 |
| != | 返回两个字符串是否不等。如果是,表达式为真。 |
| ! | 返回表达式是否为假。如果是,表达式为真。 |
| -z | 检查字符串是否为空。如果是,表达式为真。 |
| -d | 检查目录是否存在。如果是,表达式为真。 |
| -f | 检查文件是否存在且是正规文件。如果是,表达式为真。 |
| -e | 检查文件是否存在。如果是,表达式为真。 |
| -r | 检查文件是否存在且具有读取权限。如果是,表达式为真。 |
| -w | 检查文件是否存在且具有写入权限。如果是,表达式为真。 |
| -x | 检查文件是否存在且具有执行权限。如果是,表达式为真。 |
[10] 循环
#!/bin/bashA=("a" "b" "c") # 打印 1 到 10for i in {1..10}; do echo "${i}"done# 打印 a 到 cfor char in ${A[@]}; do echo "${char}"done #!/bin/bashA=0 # 打印 0 到 9,每个数字占一行while [ $((A)) -lt 10 ]; do echo $((A)) (( A++ ))done
[11] 输入输出处理
#!/bin/bashecho "You called $0, with"if [ $# -eq 0 ]; then echo "no arguments..." exit 0ficounter=0for i in "$@"; do (( counter++ )) echo "Arg[${counter}]: ${i}"done [12] 函数
#!/bin/bash# 函数前需要一个空格!function addition { result=$(( $1 + $2 ))}function main { local a=1 local b=2 result= addition $a $b echo "${a}+${b}=${result}"}main 转载地址:http://nxwaz.baihongyu.com/