Shell 语法速查
数据类型
类型
示例
备注
字符串
“string”
在shell中大部分数据都属于字符串
数组
(a b c d)
关于shell中数组的详细用法,可参见之前写过的这篇文章
整数
“12”
shell会在计算中对字符串隐式转换成数字
运算在 Shell 脚本中进行运算有几种方法:
使用expr命令比如:
1234a=1b=2sum=$(expr $a + $b)echo "a + b = $sum"
值得注意的是,由于expr是命令,因此每个变量以及运算符之间需要以空格分割;乘号(*)需要经过转义
使用$((式子))比如:
1234a=1b=2sum=$((a + b))echo "a + b = $sum"
看起来比expr命令灵活一些,不用担心乘号被bash误解,也不用关心空格。但这种shell只支持整数类型,当计算出现小数时会向下取整。
还有一种$[式子]的语法也是类似的样子,但其已在bash2.0废弃,不推荐使用。
语句条件分支关于条件分支的其他细节,可参见这篇文章
12345678read -rep " ...
shell 脚本中的判断语句
当我们在编写 Shell 脚本时,有时会遇到类似这样的错误和提示:
123456a=1if 【 $a == 1 】; then echo "yes"fi>>> bash: 【: 未找到命令...
由此可知在 Shell 脚本中,用作判断的语句是属于“命令”的。我们回忆一下上例的正确形式:
1234a=1if [ $a == 1 ]; then echo "yes"fi
那么[是命令吗?我们可以测试一下:
1234[user@localhost ~]$ which [/usr/bin/[[user@localhost ~]$ type [[ 是 shell 内建
可见[的确是个命令(而且它还拥有自己的 man 手册)。于是bash语法要求方括号和括号中的语句必须用空格隔开等奇怪的特性就都有了解释。
它和条件分支语句配合生效的方式,我猜测是通过程序返回值实现的。于是可以设计如下程序进行测试:
12345if $@; then echo "success"else echo "fa ...
命令行扫雷重制版堂堂登场!
前言这个程序本质上是使用C#重构了之前写过的《用shell脚本设计的『扫雷』游戏》,其中利用了许多C#的语言特性。相比BASH的版本,本程序极大提高了游戏的运行效率——起码在点开空格时,你是看不到临近地块被翻开的过程的。
源码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 ...
C#习题若干-其二
题目列表从某个地方找到的若干道关于C#数组的习题,我感觉这正是我欠缺的部分,因此将它们都做了一遍。
3 个可乐瓶可以换一瓶可乐,现在有 364 瓶可乐。问一共可以喝多少瓶可乐,剩下几个空瓶
编写⼀个应⽤程序⽤来输⼊的字符串进⾏加密,对于字⺟字符串加密规则如下:‘a’→’d’ ‘b’→’e’ ‘w’→’z’ …… ‘x’→’a’ ‘y’→’b’ ‘z’→’c’‘A’→’D’ ‘B’→’E’ ‘W’→’Z’ …… ‘X’→’A’ ‘Y’→’B’ ‘Z’→’C’?对于其他字符,不进⾏加密。
编写⼀个控制台程序,要求⽤户输⼊⼀组数字⽤空格间隔,对⽤户输⼊的数字从⼩到⼤输出。(Array.Sort⽅法和冒泡排序)
输⼊n(n<100)个数,找出其中最⼩的数,将它与最前⾯的数交换后输出这些数
有n(n<=100)个整数,已经按照从⼩到⼤顺序排列好,现在另外给⼀个整数x,请将该数插⼊到序列中,并使新的序列仍然有序。 输出新的序列
输⼊⼀个字符串,判断其是否是C#的合法标识符。
“回⽂串”是⼀个正读和反读都⼀样的字符串,⽐如“level”或者“noon”等等就是回⽂串。请写⼀个 ...
C#习题若干
从某个地方找到的若干道关于C#循环语法的习题,我感觉这正是我欠缺的部分,因此将它们都做了一遍。
题目列表
⼀个球从某⼀⾼度落下来,每次落地后反跳回原来⾼度的⼀半,再落下。 编程计算球第10次反弹多⾼?在第10次落地时,共经过多少⽶? 输⼊球的初始⾼度,输出反弹多⾼,和经过了多少⽶。
输入一个整数a,和一个正整数n,计算乘方a的n次方
输入 q 与 n,求下面公式的结果: q^0 + q^1 + q^2 + q^3 +…+ q^n
已知:Sn = 1 + 1/2 + 1/3 + … + 1/n。显然对于任意整数k,都有当n足够大的时候,Sn > k。 先输入一个整数K(1<=K<=15),要求计算出一个最小的n,使得Sn > K。
我国现有x亿⼈⼝,按照每年0.1%的增⻓速度,n年后将有多少⼈?
农夫约翰在去年赚了⼀⼤笔钱!他想要把这些钱⽤于投资,并对⾃⼰能得到多少收益感到好奇。 已知投资的复合年利率为R(0到20之间的整数)。约翰现有总值为M的钱(100到1,000,000之间的整数)。他清楚地知道⾃⼰ ...
CentOS Stream 9 中 Zabbix 的安装
查看系统版本1cat /etc/os-release
根据操作系统版本,在网页 https://www.zabbix.com/cn/download 中找到对应的下载流程。请注意,实现Zabbix高可用和该网页提供的流程略有不同。两台监控主机应当安装同版本的Zabbix,这里选用Zabbix 6.0 LTS、CentOS Stream 9、Server, Frontend, Agent、MySQL、Nginx
根据提示禁用EPEL源,启用Zabbix源12rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpmdnf clean all
安装Zabbix server,Web前端,agent1dnf install zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
安装MySQL123456 ...
Python语法速查
数据类型类型列表
类型
示例
备注
整数(int)
1
经过测试(pycharm),整数最大是2**14284
浮点数(float)
1.0
布尔(bool)
True
0、””、[]、()、{} 和 None 均可视为False
字符串(str)
“文本”
列表(list)
[a, b, c]
类似数组
元祖(tuple)
(a, b, c)
类似不可变的数组
集合(set)
{a, b, c}
字典(dict)
{‘a’:1, ‘b’:2}
类似对象
类型转换
方法
参数
返回值
缺省
备注
int()
数字、整数组成的字符串
整数
0
当参数为整数时,可追加一个参数指定进制
float()
数字、数字组成的字符串
浮点数
0.0
str()
字符串
‘’
repr()
对象
表达式字符串
Error
eval()
字符串
对象
Error
本方法可视为repr()逆运算的超集;另外,本方法将运行字符串中有效的表达式
chr()
整数
字符
Error
这里的“字符”指长度为 1 的字符串
o ...
Python乘法表
之前都是用 VScode 来完成一切工作的,今天在别人的建议下尝试了 Pycharm。于是写了一个乘法表来熟悉一下手感。
12345678910for i in range(9): for j in range(i + 1): result = (i + 1) * (j + 1) if result > 9: IFS = " " else: IFS = " " print(j + 1, "×", i + 1, "=", result, end=IFS) else: print()
输出:
123456789101112D:\CodeBase\python-study\pythonProject\.venv\Scripts\python.exe D:\CodeBase\python-study\pythonProject\.venv\times-table.py 1 × 1 ...
如何控制Linux终端中的样式?tput命令详解
AI:
非常感谢您的慷慨提议,但我是一个AI助手,无法接受费用或奖励。但我很乐意为您解答关于tput命令的问题。
tput是一个在Unix和Linux系统中使用的命令行工具,它用于操作终端的特性,如颜色、光标位置、屏幕清除等。tput命令可以根据终端类型设置或查询这些功能。
以下是一些常见的tput命令用法:
查询特定功能的能力:tput 例如,要查询终端是否支持颜色,可以使用命令:tput colors
设置光标位置:tput cup 例如,要将光标移动到第5行第10列的位置,可以使用命令:tput cup 5 10
设置文本颜色、背景颜色和样式:tput setaf tput setab tput boldtput sgr0例如,要设置文本颜色为红色,可以使用命令:tput setaf 1要设置背景颜色为绿色,可以使用命令:tput setab 2要设置文本为粗体,可以使用命令:tput bold要重置所有设置,可以使用命令:tput sgr0
清除屏幕或行:tput cleartput el例如,要清除屏幕上的所有内容,可以使用命令:tput clear要清除光标所 ...
用shell脚本设计的『扫雷』游戏
2023.8.18更新:有人给我建议把它放到github上,于是我就这么做了。项目地址在 https://github.com/Kide-Lee/Bash-Minesweeper ,欢迎各位给我提issue或给我星星哦。
怎么玩载入脚本后,用WASD键控制光标移动,按空格挖开地块,挖到的数字是地块周围的地雷数量,挖到地雷后游戏失败;按F标记有地雷的地块,按E表示可能有地雷。已挖开的地块无法被标记。将所有地雷标记完毕后游戏胜利。按Q键退出游戏。无论如何退出游戏,脚本都会总结扫到雷的数量和本局游戏的时间。
在CentOS 7上运行脚本CentOS 7上的bash版本太低,无法解释脚本中的某些语法。因此我们需要升级CenOS 7上的bash解释器。具体而言,我们需要依次执行如下命令:
1234wget http://ftp.gnu.org/gnu/bash/bash-5.2.15.tar.gztar zxvf bash-5.2.15.tar.gzcd bash-5.2.15./configure && make && make install
假如电脑上没有C ...