shell 脚本常用命令以及使用方法
时间: 2023-09-10 09:15:33 浏览: 121
linux常用命令与Unix Shell脚本
3星 · 编辑精心推荐
以下是 Shell 脚本中常用的命令以及使用方法:
1. echo:输出文本或变量值
用法:echo [选项] [字符串]
常用选项:
-n:不换行输出
-e:启用转义字符
示例:
```
echo "Hello, world!" # 输出 Hello, world!
echo -n "Hello, " # 输出 Hello, 不换行
echo "world!" # 输出 world!,与上一行连在一起
echo -e "1\t2\t3\n4\t5\t6" # 输出带有制表符和换行符的字符串
```
2. read:接收用户输入
用法:read [选项] [变量名]
常用选项:
-p:提示用户输入时显示的字符串
示例:
```
read -p "请输入你的名字:" name
echo "你好,$name!"
```
3. if:条件语句
用法:
```
if [ 条件 ]; then
# 条件成立时执行的语句
else
# 条件不成立时执行的语句
fi
```
示例:
```
if [ $1 -gt 0 ]; then
echo "$1 是正整数"
elif [ $1 -eq 0 ]; then
echo "$1 是零"
else
echo "$1 是负整数"
fi
```
4. for:循环语句
用法:
```
for 变量 in 列表; do
# 循环体
done
```
示例:
```
for i in {1..10}; do
echo $i
done
for file in *.txt; do
echo $file
done
```
5. while:循环语句
用法:
```
while [ 条件 ]; do
# 循环体
done
```
示例:
```
i=1
while [ $i -le 10 ]; do
echo $i
i=$((i+1))
done
```
6. case:多分支语句
用法:
```
case 变量 in
模式1)
# 模式1 成立时执行的语句
;;
模式2)
# 模式2 成立时执行的语句
;;
*)
# 所有模式都不成立时执行的语句
;;
esac
```
示例:
```
case $1 in
start)
echo "启动服务"
;;
stop)
echo "停止服务"
;;
restart)
echo "重启服务"
;;
*)
echo "用法:$0 start|stop|restart"
;;
esac
```
7. test:测试文件或字符串是否存在,以及比较数值
用法:
```
test [选项] 参数
[选项] 参数
```
常用选项:
-e:测试文件是否存在
-f:测试文件是否为普通文件
-d:测试文件是否为目录
-z:测试字符串是否为空
-n:测试字符串是否非空
-eq:测试数值是否相等
-lt:测试数值是否小于
-gt:测试数值是否大于
示例:
```
if test -e file.txt; then
echo "file.txt 存在"
fi
if [ -f file.txt ]; then
echo "file.txt 是普通文件"
fi
if [ -d dir ]; then
echo "dir 是目录"
fi
if [ -z "$str" ]; then
echo "str 是空字符串"
fi
if [ $num -gt 0 ]; then
echo "num 是正数"
fi
```
8. grep:文本搜索工具
用法:grep [选项] 模式 [文件]
常用选项:
-i:忽略大小写
-v:反向搜索,输出不匹配的行
-n:显示匹配行的行号
示例:
```
grep "hello" file.txt # 在 file.txt 中搜索 hello
grep -i "hello" file.txt # 在 file.txt 中忽略大小写地搜索 hello
grep -n "hello" file.txt # 在 file.txt 中搜索 hello 并显示匹配行的行号
grep -v "hello" file.txt # 在 file.txt 中反向搜索,输出不匹配的行
```
9. sed:流编辑器,用于文本替换
用法:sed [选项] '命令' 文件
常用命令:
s/模式/替换/:替换指定模式为指定替换内容
示例:
```
sed 's/hello/hi/g' file.txt # 将 file.txt 中所有 hello 替换为 hi
```
10. awk:文本处理工具,可进行简单数据分析和处理
用法:awk [选项] '模式 { 命令 }' [文件]
常用命令:
print:输出指定内容
示例:
```
awk '{ print $1 }' file.txt # 输出 file.txt 中每行的第一个单词
```
阅读全文