-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Description
[TOC]
命令操作符
在 shell 中,多个命令之间的连接符有下面几种:
;
命令依次连续执行()
优先符操作,(cmd_x1 && cmd_x2) || (cmd_x3 && cmd_x4)这条命令在cmd_x1失败后cmd_2不会执行,但是cmd_x3 && cmd_4依旧会执行,在没有优先符的情况下则后面的都不会执行&&
命令遇到错误停止执行,即前一条命令的退出状态是 0 则继续执行下一条的命令&
命令在后台执行,使用方法是在命令后跟一个空格加&||
命令成功执行则停止,如果前一条命令退出状态是 1 则执行下一条命令!
命令结果取非操作,比如删除当前目录下除 HTML 外的其他文件rm -r !(*.html)|
管道操作符,第一个命令的输出作为下一个命令的输入,比如ll | > .log{}
合并操作符号,比如[ -f /home/xyz.txt ] || touch /home/xyz.txt; echo "The file does not exist"最后的 echo 命令始终输出,合并命令即可[ -f /home/xyz.txt ] || {touch /home/xyz.txt; echo "The file does not exist"}\
连接符,命令太长时用于换行
区别
常用脚本工具的区别:
- sed - when you need to do simple text transforms on files.
- awk - when you only need simple formatting and summarization or transformation of data.
- perl - for almost any task, but especially when the task needs complex regular expressions.
- python - for the same tasks that you could use Perl for.
命令
echo
-e 标记表示解释所有的转义序列 (如 \n 为换行)。
$ echo -e "以下为登录到系统中的用户\n\n $(who)"
> 以下为登录到系统中的用户
>
> xujiaqi console Dec 24 17:21 定义变量
变量名=$(命令)
变量名=$(命令 [命令选项 ...] 参数1 参数2 ...)
或者:
变量名=`命令`
变量名=`命令 [命令选项 ...] 参数1 参数2 ...`创建数组
langArr=(js ts py go c cpp java sql swift)遍历数组数组
for lang in ${langArr[@]}
do
echo $lang
done判断值是否在数组中
# 方法不唯一
echo "${langArr[@]}" | grep -wq "targetVal" && echo "Yes" || echo "No"场景
大小写转换
echo 'hello' | tr 'a-z' 'A-Z'
echo 'HELLO' | tr 'A-Z' 'a-z'Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels