文章目录
- Shell脚本基础教程
- 一、基础操作
- 1. 执行脚本
- 变量操作
- for 循环
- while 循环
- 常用命令工具
-
- 输入输出
-
- 条件判断
- 数组
- 函数定义
- 字符串
- 注释与多行命令
- 后台执行
Shell脚本基础教程
一、基础操作
1. 执行脚本
chmod +x ./test.sh
./test.sh
变量操作
定义变量:
myName = "li"
使用变量:
echo $myName
删除变量:
unset myName
$0 脚本名称
$n 传入参数
$@ 命令行所有的参数, 每个参数区分对待
$* 命令行所有的参数,每个参数看成一个整体
$? 最后执行命令的状态,为0正确,不为0,错误
$$ 当前进程的id
$! 后台运行的醉胡一个线程的pid
for 循环
for i in "$*"; do
echo $i
done
for i in "$@"; do
echo $i
done
while 循环
count=0
while [ $count -lt 5 ]; do
echo $count
((count++))
done
常用命令工具
grep 命令
grep -i "user" /etc/passwd
grep -n "root" /etc/passwd
管道符
ls -l /etc | more
ls -l | grep "^-" | wc -l
输入输出
重定向操作
echo "Hello" > output.txt
echo "World" >> output.txt
wc -l < output.txt
read 命令
read -t 30 -p "请输入姓名: " name
echo "你好,$name"
条件判断
if [ $a -eq $b ]; then
echo "相等"
elif [ $a -gt $b ]; then
echo "a更大"
else
echo "b更大"
fi
case $choice in
1) echo "选项1" ;;
2|3) echo "选项2或3" ;;
*) echo "无效选项" ;;
esac
数组
array=("apple" "banana" "orange")
for fruit in "${array[@]}"; do
echo $fruit
done
echo ${#array[@]}
函数定义
sum() {
echo $(( $1 + $2 ))
}
result=$(sum 5 3)
echo $result
字符串
str="Hello World"
echo ${#str}
echo ${str:0:5}
echo ${str:6}
注释与多行命令
: '
多行注释
可以写任意内容
'
command1 && \
command2 || \
command3
后台执行
./long-running.sh &
echo $!