1. 数字集合
for i in {1..20}
do
echo $i
done
2.详细列出(字符且项数不多)
for i in 1 2 3 4 5
do
echo $i
done
3.对存在的文件进行循环
for filename in `ls *.sh`
do
echo $filename
done
4.for循环--有点像C语法,但记得双括号
for((i=1;i<100;i++))
do
echo $i
done
5.seq形式 起始从1开始
for i in `seq 100`
do
echo $i
done
for i in $(seq 100)
do
echo $i
done
三. while
#!/bin/bash
# 显示一系列数字
count=1
while [ $count -le 6 ]; do
echo $count
count=$((count + 1))
done
echo "finished"
下面有一个使用while循环更加高级的一个例子:
#!/bin/bash
#
# 一个菜单驱动的展示系统信息的脚本
#
# 展示结果的延迟时间(单位/秒)
DELAY=3
while [[ "$REPLY" != "0" ]]; do
clear
cat <<EOF
----------------------------
请选择:
1.显示系统信息
2.显示磁盘使用情况
3.显示用户空间使用情况
0.退出
----------------------------
EOF
read -p "请输入你的选择[0-3]:" REPLY
if [[ $REPLY = [0-3] ]];then
# 显示系统使用情况
if [[ "$REPLY" = "1" ]];then
echo
echo "主机名:${HOSTNAME}"
uptime
sleep $DELAY
fi
# 显示磁盘使用情况
if [[ "$REPLY" = "2" ]];then
df -h
sleep $DELAY
fi
# 显示用户空间使用情况
if [[ "$REPLY" = "3" ]];then
# 判定有效用户是否为root
if [[ $(id -u) -eq 0 ]];then
echo
echo "(所有用户)用户空间使用情况:"
du -sh /home/*
else
echo
echo "(${USER})用户空间使用情况:"
du -sh $HOME
fi
sleep $DELAY
fi
else
echo "非法输入"
sleep $DELAY
fi
done
echo "脚本退出"执行脚本:./read-menu.sh,输出:
----------------------------
请选择:
1.显示系统信息
2.显示磁盘使用情况
3.显示用户空间使用情况
0.退出
----------------------------
请输入你的选择[0-3]:1
主机名:localhost.localdomain
17:28:28 up 333 days, 44 min, 10 users, load average: 1.04, 1.06, 1.17在上面的例子中,将菜单封装在while循环内,程序就可以在用户每次选择后重复展示菜单项。只要REPLY值不为0,重复循环,展示菜单项,给用户又一次的选择机会。而在每次动作结束时,系统执行sleep命令使程序暂停几秒,让用户看到选择执行的结果,随后清空屏幕显示并再次显示菜单。
用python 2.x实现上面个例子
vim p1.py ; python p1.py
# _*_coding:utf-8_*_
# coding=utf-8
import sys
# 导入系统命令包
import os
#导入正则表达式包
import re
#在控制台获取字符串
str2=raw_input("请输入字符串:")
if str2 .__eq__('abc'):
print("你输入的字符串是:"+str2)
input =1
while(input !=0):
print("--------------------------")
print("请选择:")
print("1.显示系统信息")
print("2.显示磁盘使用情况")
print("3.显示用户空间使用情况")
print("0.退出")
print("--------------------------")
#在控制台获取整型
input = int(raw_input('请输入[0-3]:'))
# 正则表达式匹配
pattern = re.compile(r'[0-3]')
# 将input 转为字符串才能匹配
if pattern.match(str(input)):
if input == 1:
print("主机名:"+''.join(os.popen('echo ${HOSTNAME}').read()))
# 执行shell 的暂停命令
os.popen('sleep 3')
elif input == 2:
print("磁盘使用情况:"+''.join(os.popen('df -h').readlines()))
# 执行shell 的暂停命令
os.popen('sleep 3')
elif input == 3:
print("用户空间使用情况:"+''.join(os.popen('du -sh $HOME').read()))
# 执行shell 的暂停命令
os.popen('sleep 3')
else:
print("")
else:
print("非法输入!")
os.popen('sleep 1')
print("脚本已退出")
# python 2.x和python3.x 在控制台获取参数还都可以用 : strx= input("请输入字符串:") ,获取的值 默认是 字符串类型
# 字符串转整型: num=int(strx) ; 整型转字符串: strx = str(num)
if 表达式
[ ]和[[ ]]的区别
区别一。在[中使用逻辑运算符,需要使用-a(and)或者-o(or)。在[[中使用逻辑运算符,需要使用&&或者||。
if [[ 'abc' == "" || 'abc' == [a-z]* ]];then
echo "ok"
fi
if [[ 'abc' == "" -o 'abc' == [a-z]* ]];then
echo "ok"
fi
区别二。[是shell命令,在它包围的表达式是它的命令行参数,所以用>,<,=,!=比较整型数字和字符串大小需要转义,否则就变成io重定向了。[[是shell关键字,不会做命令行扩展,所以不需要进行转义。但是语法相对严格,如在[中可以用引号括起操作付,[[则不行。如if [ "-z" "ab" ]。
if [ 'abc' \> 'aad' ];then
echo true
fi
if [[ 'abc' > 'aad' ]];then
echo true
fi
区别三。[[可以做算术扩展,[则不行。
if [[ 11+1 -eq 100 ]]
echo "ok"
而if [ 11+1 -eq 100 ]则会报错。
区别四。$[]与$(())都支持整数四则运算,$[[]]没有这种用法
echo $[ 2*3 +1 ] 不会报错
但是 echo $[[ 2*3 +1 ]] 会报错。
区别五。[[]]能用正则,而[]不行
if [[ $x =="" || $x == [a-Z]* ]];then
echo "没有输入数字或输入的数字不合法!"
exit 5
fi
` `与$() 都用作命令替换,$用作参数替换
$(date -d "today" +"%Y-%m-%d %H:%M:%S")
`date -d "today" +"%Y-%m-%d %H:%M:%S"`
x="abc"
echo $x
' ' 与" " ,单引号剥夺了所有字符的特殊含义,而双引号不会。
即x=5
echo '$x',会使$的特殊含义失效,输出:$x
而双引号会输出:5
QProcess执行python脚本 timeout sh脚本执行python
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
python并发执行request请求
本文详细介绍了Python并发执行Request请求的方法示例,给出了详细的代码示例,同时也介绍了Python中实现并发编程的方法。
Python HTTP python 并发执行request -
若依集成RestTemplate
一、理解需求例如我们现在有一个需求:站内消息自动刷新 1、消息是谁来发送? 在我们的系统里面,每一个用户的某一些操作都会给对应的处理人发送消息。 2、谁来处理消息? 对应的处理人有可能是消息发送者也有可能不是,那么这时候就需要系统主动告诉对应的消息处理人有事情要处理了,而不是每个处理人自己去一直刷新界面。二、实现构思设计在上面的需求里面我们可以知道,实现的方式很简单,我们大可以在用户操作的那段代码
若依集成RestTemplate Redis 分布式Websocket WebSocket springboot