当前位置: 首页 > article >正文

Shell脚本中的弱治简写

1. 退出状态码检查

$? -eq 0:检查上一条命令是否成功。
$? -ne 0:检查上一条命令是否失败。

示例
if [ $? -eq 0 ]; then
    echo "命令成功"
fi

2. 命令执行并检查状态

&&:如果上一条命令成功,则执行下一条命令。
||:如果上一条命令失败,则执行下一条命令。

示例
mkdir /tmp/test && echo "目录创建成功"
mkdir /tmp/test || echo "目录创建失败"

3. 变量默认值

${VAR:-default}:如果变量 VAR 未设置或为空,则使用默认值。
${VAR:=default}:如果变量 VAR 未设置或为空,则设置默认值并返回。

示例
echo "用户名:${USER:-guest}"

4. 文件测试

-e:文件或目录是否存在。
-f:是否是普通文件。
-d:是否是目录。
-r:文件是否可读。
-w:文件是否可写。
-x:文件是否可执行。

示例
if [ -f /path/to/file ]; then
    echo "文件存在"
fi

5. 字符串测试

-z:字符串是否为空。
-n:字符串是否非空。
=:字符串是否相等。
!=:字符串是否不相等。

示例
if [ -z "$VAR" ]; then
    echo "变量为空"
fi

6. 算术比较

-eq:等于。
-ne:不等于。
-gt:大于。
-lt:小于。
-ge:大于等于。
-le:小于等于。

示例
if [ $COUNT -gt 10 ]; then
    echo "数量大于 10"
fi

7. 命令替换

$(command):执行命令并返回输出。
`command`:与 $(command) 相同,但推荐使用 $(command),因为它更易读且支持嵌套。

示例
DATE=$(date)
echo "当前时间:$DATE"

8. 数组操作

${ARRAY[@]}:获取数组的所有元素。
${#ARRAY[@]}:获取数组的长度。
${ARRAY[0]}:获取数组的第一个元素。

示例
FRUITS=("apple" "banana" "cherry")
echo "第一个水果:${FRUITS[0]}"

9. 循环简写

for i in {1..5}:循环 1 到 5。
for i in $(seq 1 5):与 {1..5} 相同,但更灵活。

示例
for i in {1..5}; do
    echo "数字:$i"
done

10. 条件简写

[ ]:测试条件(等同于 test 命令)。
[[ ]]:更强大的条件测试,支持逻辑运算符和模式匹配。

示例
if [[ "$VAR" == "value" ]]; then
    echo "变量等于 value"
fi

11. 逻辑运算符

&&:逻辑与。
||:逻辑或。
!:逻辑非。

示例
if [ "$VAR1" = "value1" ] && [ "$VAR2" = "value2" ]; then
    echo "条件满足"
fi

12. 函数简写

function_name() { ... }:定义函数。

示例
greet() {
    echo "Hello, $1!"
}
greet "World"

13. 输入重定向

<:从文件读取输入。
<<:从 Here Document 读取输入。

示例
cat < /path/to/file

14. 输出重定向

>:将输出重定向到文件(覆盖)。
>>:将输出重定向到文件(追加)。

示例
echo "Hello" > /path/to/file

15. 后台执行

&:将命令放到后台执行。

示例
sleep 10 &

总结

Shell 脚本中有许多简写语法,我个人感觉大部分都比较弱治,所以就写这么一篇博客。


http://www.kler.cn/a/590932.html

相关文章:

  • 紧急通知:某平台泄露充电桩财富公式!5台×120kW=1.3年回本,年利润34.3万!速删前收藏 - 慧知开源充电桩平台
  • 234.回文链表
  • 【机器人-基础知识】标定 - IMU(Inertial Measurement Unit, 惯性测量单元)
  • Go语言的负载均衡
  • MyBatis-Plus防全表更新与删除插件BlockAttackInnerInterceptor
  • 微信小程序订阅消息发送消息,点击消息进入小程序页面
  • 4.玩转热图(相关矩阵、缺失值、多维相关、聚类热图、时间序列)——Python数据挖掘代码实践
  • 数据结构概览
  • Python的Pytest(2)
  • vulhub/joker 靶机----练习攻略
  • pycharm-python國際象棋遊戲代碼
  • C语言 论static和extern关键字
  • 透析 HTTP OPTIONS 预检请求
  • 软考中级-数据库-5.4 信息安全与网络安全
  • TCP 通信流程图
  • 使用pyinstaller打包py文件
  • 网络编程套接字【端口号/TCPUDP/网络字节序/socket编程接口/UDPTCP网络实验】
  • [Java微服务架构]1_架构选择
  • RISCV虚拟化环境搭建
  • [快乐学坊management_1] With Cursor | Mysql设计 | 服务接口设计与开发