shell常用命令

1.常见变量以及常见符号

=等于号赋值,a=1,等号左右不能有空格
$a调取a变量的值
${a}调取a变量的值,当{a}后面有其他字符时,不会影响a的获取
$?判断上一条命令执行的结果,成功为0,失败为1
$1-$9返回对应的第几个参数
$*返回所有的参数的值是什么
$#返回参数的个数
>输出重定向(覆盖)
>>输出重定向(追加)
;执行多条命令
|管道符
&&前一条命令执行成功才会执行后面
||前一条命令执行失败才会执行后面
""输出变量识别通配符
''输出本身
``优先执行,放在``中会识别成命令执行
2>/dev/null错误输出到无底洞

2.常见的条件判断
  • 语法:[ 判断表达式 ]
常见判断条件
-e目标是否存在(exist)
-d是否为目录(directory)
-f是否为文件(file)
-r是否有读权限(read)
-w是否有写入权限(write)
-x是否有执行权限(excute)
-eq等于(equals)
-ne不等于(not equals)
-gt大于(greater than)
-lt小于(lesser than)
-ge大于或等于(greater or equal)
-le小于或等于(lesser or equal)
=判断字符串是否相等
!=判断字符串是否不相等
3.shell脚本的输入

语法:read -参数

-p给出提示符,默认不支持”\n“换行
-s隐藏输入的内容
-t给出等待的时间,超出会推出read
-n限制读取自渡川的个数,触发时到临界的值会自动执行

4.判断语句

(1)单个判断

if [ 执行条件 ]
then
执行语句
fi

(2)单个判断带else

if [ 执行条件 ]
then
执行语句
else
执行语句
fi

(3)多个判断

if [ 执行条件 ]
then
执行语句
elif [ 执行条件 ]
执行语句
.....
fi

5.循环语句

5.1for循环语句

(1)for 变量名 in 值1 值2 值3 ....
do
执行语句
done

(2)for 变量名 in `命令`
do 
执行语句
done

(3)for ((条件))
do
执行动作
done

5.2 case循环

case 变量 in
值1)
执行动作1
;;
值2)
执行动作2
;;
值3)
执行动作3
;;
....
esac

5.3 while 循环

while [ 执行条件 ]
do
执行语句
done
定义一个变量
file=/file1/file2/file3/m.file.txt

通过 ${ } 分别替换获得不同的值,单一符号是最小匹配﹔两个符号是最大匹配
1. #  去掉/左边的
1)${file#*/}:拿掉第一条 / 及其左边的字串:file1/file2/file3/m.file.txt
2)${file##*/}:拿掉最后一条 / 及其左边的字串:m.file.txt
3)${file#*.}:拿掉第一个 . 及其左边的字串:file.txt
4)${file##*.}:拿掉最后一个 . 及其左边的字串:txt

2.%  右边  去掉/右边的
1)${file%/*}:拿掉最后条 / 及其右边的字串:/file1/file2/file3
2)${file%%/*}:拿掉第一条 / 及其右边的字串:(空值)
3)${file%.*}:拿掉最后一个 . 及其右边的字串:/file1/file2/file3/m.file
4)${file%%.*}:拿掉第一个 . 及其右边的字串:/file1/file2/file3/m

3.字符定位:字符数
1)${file:0:6}:提取最左边的 6 个字:/file1
2)${file:6:6}:提取第 6 个字符右边的连续 6 个字:/file2

4.字符串替换 /(第一个);//(全部)
1)${file/file/path}:将第一个 dir 提换为 path:/path1/file2/file3/m.file.txt
2)${file//file/path}:将全部 dir 提换为 path:/path1/path2/path3/m.file.txt

5.针对不同的变数状态赋值(没设定、空值、非空值):
-	:-	+
1)${file-m.file.txt} :假如 $file 为空值,则使用 m.file.txt 作默认值。(保留没设定及非空值)
2)${file:-m.file.txt} :假如 $file 没有设定或为空值,则使用 m.file.txt 作默认值。 (保留非空值)
3)${file+m.file.txt} :不管 $file 为何值,均使用 m.file.txt 作默认值。 (不保留任何值)

:+	=	:=
4)${file:+m.file.txt} :除非 $file 为空值,否则使用 m.file.txt 作默认值。 (保留空值)
5)${file=m.file.txt} :若 $file 没设定,则使用 m.file.txt 作默认值,同时将 $file 定义为非空值。 (保留空值及非空值)
6)${file:=m.file.txt} :若 $file 没设定或为空值,则使用 m.file.txt 作默认值,同时将 $file 定义为非空值。 (保留非空值)

?	:?
7)${file?m.file.txt} :若 $file 没设定,则将 m.file.txt 输出至 STDERR。 (保留空值及非空值))
8)${file:?m.file.txt} :若 $file 没设定或为空值,则将 m.file.txt 输出至 STDERR。 (保留非空值)

6.计算出变量值的长度#
${#file}  等于29

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值