Shell基础

Shell基础

系统变量
  1. 位置参数的值可以用 $N 得到,第 0 号为程序名字,从 1 开始就表示传递给程序的参数。如 $0 表示程序的名字,$1 表示传递给程序的第一个参数,以此类推。
  2. $0 : 程序的完整路径和名字。
  3. $# : 总的参数数目。
  4. $? : 前一个问题的返回码。正常退出返回 0,反之为非 0 值。
  5. $* : 传递给程序的所有参数组成的字符串。

if 语句

if test $1 -eq 0; then
    echo "if"
elif [ $1 -eq 1 ] then
    echo "elif"
else
    echo "else"
fi

赋值语句

注意:等号(=)前后没有空格

x=26
x=$x+1
s="How old are you?"
echo $s+"I am "+$x

读入语句

read str
echo $str

计算表达式

注意:乘号(*) 需要转义(加’\’)

read x,y
z=`expr$x+$y`
echo $z
z=`expr$x\*$y`
echo $z

返回码

注意:‘[’后面和 ‘]’前面及等号‘=’的前后都应有一个空格

read str1, str2
[ "$str1" = "$str2" ]
echo $?

字符串长度

[ -n "$str1" ]  # length > 0 ?
[ -z "$str2" ]  # length = 0 ?

比较符

-eq  # == equal
-ge  # >= greater than and equal
-le  # <= less than and equal
-ne  # != not equal
-gt  # >  greater than
-lt  # <  less than

逻辑运算符

-a  # && and
-o  # || or

文件操作符

-d  # directory
-f  # file
-L  # symbol link
-r  # readable
-w  # writeable
-x  # executive
-s  # length != 0

循环语句

在循环列表中的空格表示换行
input : a,b,c,e,I 2,4,6,8
output : a,b,c,e,I
2,4,6,8

# for each
for i in $str1
do
    echo $i
done

# for
for((j=1;j<=100;j++))
do
    echo $j
done

# while
while (())
do
    pass
done

# do
until (())
do
    pass
done

switch语句

case $str1 in
"a"|"b")
    pass;;
"c")
    pass;;
*)  # else
    pass;;
esac

常用操作

1. 提取文件名和目录名的一些方法

分割字符串方式

1.1 返回起最后一个‘/’(不含)边的内容

var=/dir1/dir2/file.tar.gz
${var##*/}  # file.tar.gz

1.2 返回起最后一个‘.’(不含)边的内容

var=/dir1/dir2/file.tar.gz
${var##*.}  # gz

1.3 返回起第一个‘.’(不含)边的内容

var=/dir1/dir2/file.tar.gz
${var#*.}  # tar.gz
var=/dir1/dir2.d/file.txt
${var#*.}  # d/file.txt

1.4 返回起第一个‘/’(不含)边的内容

var=/dir1/dir2/file.tar.gz
${var%/*}  # /dir1/dir2

1.5 返回起最后一个‘.’(不含)边的内容

var=/dir1/dir2/file.tar.gz
${var%%.*}  # /dir1/dir2/file.tar

总结:
#:左起第一个
%:右起第一个
##:左起最后一个
%%:右起最后一个
*:表示要删除的内容,位于字符(例子中的’/’和’.’)左边,删除字符及其左边的内容,右边同理

命令方式

1.6 文件名 basename 路径 [后缀]

$(basename /dir1/dir2/file.txt)  # file.txt
$(basename /dir1/dir2/file.txt .txt)  # file

1.7 目录名 dirname 路径

$(dirname /dir1/dir2/)  # dir1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值