shell函数

shell脚本

别等时光非礼了梦想. 提交于 2019-12-28 00:45:06
#shell 脚本随机数 #!/bin/bash echo -e “\033[34m 游戏开始!!! \033[0m” while : do random_number=$(shuf -i 10-99 |head -1) # echo $random_number for i in $(seq 3) do read -p "请输入你猜的数字大小:" guess_number if [ $random_number -gt $guess_number ] then echo "猜小了!" elif [ $random_number -lt $guess_number ] then echo "猜大了!" else read -p "恭喜你,猜对了,是否继续玩游戏(y/n):" judge if [ $judge == "Y" -o $judge == "y" ] then break else echo -e "\033[34m 欢迎大佬下次在玩!\033[0m" exit fi fi echo "你还有$(expr 3 - $i)次机会!" if [ $(expr 3 - $i) == 0 ] then read -p "恭喜你,猜对了,是否继续玩游戏(y/n):" judge if [ $judge == "Y" -o $judge == "y" ] then break

system函数

妖精的绣舞 提交于 2019-12-27 21:33:38
相关函数 fork,execve,waitpid,popen 表头文件 #include<stdlib.h> 定义函数 int system(const char * string); 函数说明 system() 会调用fork()产生子进程,由子进程来调用/bin/sh-c string来执行参数string字符串所代表的命令,此命>令执行完后随即返回原调用的进程。在调用system()期间SIGCHLD 信号会被暂时搁置,SIGINT和SIGQUIT 信号则会被忽略。 返回值 =-1:出现错误 =0:调用成功但是没有出现子进程 >0:成功退出的子进程的id 如 果system()在调用/bin/sh时失败则返回127,其他失败原因返回-1。若参数string为空指针(NULL),则返回非零值>。 如果system()调用成功则最后会返回执行shell命令后的返回值,但是此返回值也有可能为 system()调用/bin/sh失败所返回的127,因此最好能再检查errno 来确认执行成功。 附加说明 在编写具有SUID/SGID权限的程序时请勿使用system(),system()会继承环境变量,通过环境变量可能会造成系统安全的问题。 范例 #i nclude<stdlib.h> main() { system(“ls -al /etc/passwd /etc/shadow”);

lamp源码编译

匆匆过客 提交于 2019-12-27 13:52:23
在编译这些源码包之前,我们需要确认系统中有gcc,gcc-c++,make编译器,一般系统都自带了gcc和make编译器。 一般安装一个源码包的过程是: 1.解压源码包的tar.gz文件,如 tar -xvf mysql.tar.gz -C /opt/lamp ,其中tar命令中的-C是指定解压路径.其实我们完全可以写一个shell脚本进行解压. 2.配置源码,使用命令 ./configure 3.编译源码,使用命令 make 4.安装,使用 make install 现在我们开始安装lamp环境,在此之前,我们需要安装一系列的必须库. 安装 libxml2 1.进入libxml2源码包目录,进行配置设置安装的路径 Shell> ./configure --prefix=/usr/local/libxml2 2.使用make编译 3.使用make install 安装 注:在编译libxml2时,由于nanohttp.c中的open函数有问题,所以我们需要修改nanohttp.c的源代码,在1588行给open加上第三个参数0777就行了. 安装 libmcrypt 1.进入libmcrypt源码包目录,进行配置设置安装 Shell> ./configure --prefix=/usr/local/libmcrypt 2.使用make编译 3.使用make install安装 4

使用pyinstaller -w打包,subprocess报错的解决方法

泪湿孤枕 提交于 2019-12-27 00:39:42
使用pyinstaller打包python程序,使用-w参数去掉console后,点击exe文件跳出提示窗口显示‘Fail to execute XXXX’ subprocess.check_output,Popen函数需要加入如下参数: shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE p = subprocess.Popen(*args,shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 这样就解决了这个问题。 来源: CSDN 作者: Ding_0110M 链接: https://blog.csdn.net/Ding_0110M/article/details/103720031

shell function

匆匆过客 提交于 2019-12-26 11:07:55
function 功能 什么是『 函数 (function) 』功能啊?简单的说,其实, 函数可以在 shell script 当中做出一个类似自订运行命令的东西,最大的功能是, 可以简化我们很多的程序码~ function 的语法是这样的: function fname() { 程序段 } 那个 fname 就是我们的自订的运行命令名称~而程序段就是我们要他运行的内容了。 要注意的是, 因为 shell script 的运行方式是由上而下,由左而右, 因此在 shell script 当中的 function 的配置一定要在程序的最前面 , 这样才能够在运行时被找到可用的程序段喔! 好~我们将 sh12.sh 改写一下,自订一个名为 printit 的函数来使用喔: [root@www scripts]# vi sh12-2.sh #!/bin/bash # Program: # Use function to repeat information. # History: # 2005/08/29 VBird First release PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH function printit(){ echo -n "Your

Shell脚本之四 内建命令

匆匆过客 提交于 2019-12-25 18:12:52
所谓 Shell 内建命令,就是由 Bash 自身提供的命令,而不是文件系统中的某个可执行文件。 可以使用 type 来确定一个命令是否是内建命令: [root@localhost ~]# type cd cd is a Shell builtin [root@localhost ~]# type ifconfig ifconfig is /sbin/ifconfig 由此可见, cd 是一个 Shell 内建命令,而 ifconfig 是一个外部文件,它的位置是 /sbin/ifconfig 。 还记得系统变量 $PATH 吗? $PATH 变量包含的目录中几乎聚集了系统中绝大多数的可执行命令,它们都是外部命令。 通常来说,内建命令会比外部命令执行得更快,执行外部命令时不但会触发磁盘 I/O,还需要 fork 出一个单独的进程来执行,执行完成后再退出。而执行内建命令相当于调用当前 Shell 进程的一个函数。 接下来的几节我们将重点讲解几个常用的 Shell 内置命令。 一、Shell alias命令 使用 alias 命令自定义别名的语法格式为: alias new_name='command' 比如,一般的关机命令是 shutdown-h now ,写起来比较长,这时可以重新定义一个关机命令,以后就方便多了。 alias myShutdown='shutdown -h now

shell特殊变量,记录一下

自作多情 提交于 2019-12-24 14:05:16
$0 当前脚本的文件名 $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。 $# 传递给脚本或函数的参数个数。 $* 传递给脚本或函数的所有参数。 $@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。 $? 上个命令的退出状态,或函数的返回值。 $$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。 来源: https://www.cnblogs.com/erhu-67786482/p/8706805.html

shell @ Linux (1)

前提是你 提交于 2019-12-24 12:00:14
开始学习Shell,管理自己的Linux。 跟随着编程语言的脚步,开始自己的Shell之旅。 1.Shell的种类 目前流行的Shell有ash, bash, ksh, csh, zsh等,目前Linux内置的Shell一般为bash,可以用 #echo $SHELL 来查看所使用的shell类型。 Bourne Again shell,它是Bourne shell的扩展,简称Bash,与Bourne shell完全向后兼容,并且在Bourne shell的基础上增加、增强了很多特性。Bash放在/bin/bash中,它有许多特色,可以提供如命令补全、命令编辑和命令历史表等功能,它还包含了很多C shell和Korn shell中的优点,有灵活和强大的编程接口,同时又有很友好的用户界面。 2.Shell脚本 Shell脚本的格式如下 #!/bin/sh #comments Your commands go here 首行中的符号#!告诉系统其后路径所指定的程序即是解释此脚本文件的Shell程序。如果首行没有这句话,在执行脚本文件的时候,将会出现错误。后续的部分就是主程序,Shell脚本像高级语言一样,也有变量赋值,也有控制语句。除第一行外,以#开头的行就是注释行,直到此行的结束。如果一行未完成,可以在行尾加上\,这个符号表明下一行与此行会合并为同一行。 将文件存盘后

Shell(1)---变量

偶尔善良 提交于 2019-12-24 04:35:23
Shell(1)---变量 初衷 :学习shell的目的很简单,自己经常在linux服务器上做各种操作,而且基本上是一些相同的命令操作,所以就想通过shell脚本来启动就行,能够节省一定的开发时间,提高工作效率。 一、shell变量 1、定义变量 Shell 支持以下三种定义变量的方式 xub$ name=value xub$ name='value' xub$ name="value" # name 是变量名,value 是赋给变量的值。 区别 如果 value 不包含任何空白符(例如空格、Tab 缩进等),那么可以不使用引号; 如果 value 包含了空白符,那么就必须使用引号包围起来。 使用单引号和使用双引号也是有区别的 下面讲。 注意 赋值号 = 的两边不能有空格。 xub$ name="小小" #赋值 xub$ echo $name #输出命令 xub$ 小小 #输出 2、使用变量 使用一个定义过的变量,只要在变量名前面加美元符号 $ 即可,如: xub$ home="千岛湖" xub$ echo $home 千岛湖 xub$ echo ${home} 千岛湖 区别 变量名外面的花括号 { } 是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况: xub$ name="xiaoxaio" xub$ echo "my name is

Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

ぃ、小莉子 提交于 2019-12-24 04:35:06
前面已经讲到,变量名只能包含数字、字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量。 例如,$ 表示当前Shell进程的ID,即pid,看下面的代码: $echo $$ 特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。 $# 传递给脚本或函数的参数个数。 $* 传递给脚本或函数的所有参数。 $@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。 $? 上个命令的退出状态,或函数的返回值。 $$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。 命令行参数 运行脚本时传递给脚本的参数称为命令行参数。命令行参数用 $n 表示,例如,$1 表示第一个参数,$2 表示第二个参数,依次类推。 请看下面的脚本: #!/bin/bash echo "File name: $0" echo "First Parameter : $1" echo "Second Parameter : $2" echo "Quoted Values: $@" echo "Quoted Values: $*" echo "Total Number of Parameters:$#" 运行结果: bash shell