shell 小技巧

本文介绍了一系列Shell脚本实用技巧,包括清空文件内容、检测命令行参数、使用特殊符号进行数制转换、变量赋值及历史命令调用等。通过具体示例展示了如何在Shell脚本中高效地完成各种任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


1.清空文件内容(也有touch的功能)

:>data  >data #注:这里不适用管道,符号链接,和某些特殊文件 

2.检测命令行参数

case "$1" in
"" ) 
   data=100;;
*[!0-9]*) 
   echo "Usage: `basename $0`"; 
   exit 1;;
* ) 
   data=$1;;
esac


3.在README的第一行加上#!/bin/more,让它具有可执行权限,结果是将文档自动列出自己的内容。

 

4.echo对于打印单行消息是非常好的,如果想打印消息块的话,可以用cat here document。

 

5.数制转换

echo $(( 2#101011 )) 

 

6.匿名代码块中的变量,对于脚本其他部分的代码是可见的。

a=123
{    
a=321
}
echo "a = $a" #a=321  


7.关于历史命令的调用

      !!    前一条命令;
  !:0    不带参数的前一条命令名;
  !^    前一条命令的第一个参数;
  !:n    前一条命令的第n个参数;
  !$     前一条命令的最后一个参数;
  !*     前一条命令的所有参数,命令名除外;
  !n     第n条命令;
  !-n    倒数第n条命令;
  !str    最近一条以str开头的命令;
  !?str    最近一条包含str的命令;
  ^a^b  将上一条命令名中的a替换为b;
  !:gs/a/b 将上一条命令的所有a替换为b(包含命令名和参数)。


8.关于${a:b:c}的用法

#!/bin/bash
a=/dir1/dir2/dir3/my.file.txt
echo ${a:0:3} #打印前三个字符
echo ${a:${#a}-3:3} #打印后三个字符 


9.${a-b} (${a:-b})和${a=b} (${a:=b})的区别

啥都不说了,看执行结果什么都明白了

#!/bin/bash
b=
echo '${b-acefei} = '${b-acefei}
echo '${b:-acefei} = '${b:-acefei}
echo '$b = '$b
b=
echo '${b=acefei} = '${b=acefei}
echo '${b:=acefei} = '${b:=acefei}
echo '$b = '$b


10.给多个变量循环赋值

#!/bin/bash
var=(var1 var2 var3)
char="a b c"
i=0

for loop in $(echo $char)
do
    eval "${var[i]}=$loop"
    ((i++))
done

echo $var1
echo $var2
echo $var3

11. 用shell控制mysql

mysql -uroot -D 'DATABASENAME' -e 'select * from TABLE'





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值