php 生成shell脚本文件内容_shell脚本生成文件 - CSDN
精华内容
参与话题
  • shell脚本生成文本文件

    万次阅读 2016-10-08 17:08:43
    shell脚本生成文本文件 17 December 2014 在Linux上写shell脚本的一个很重要的意图是自动化。假如我们希望自动生成一个具有特定内容的文本文件,应该怎么实现呢? 我用过两个方法,下面分别举例说明。为了更...
    
    

    在Linux上写shell脚本的一个很重要的意图是自动化。假如我们希望自动生成一个具有特定内容的文本文件,应该怎么实现呢?

    我用过两个方法,下面分别举例说明。为了更通用,这两个例子中的文本内容都是多行的。

    使用echo命令

    echo "Hello, World!
    My name is Shengbin." > readme.txt
    

    这种方法其实就是把echo的输出重定向到了文件。echo会原样保留换行符,所以多行也是支持的。

    使用cat命令

    cat > readme.txt << END_TEXT
    Hello, World!
    My name is Shengbin.
    END_TEXT
    

    上面的END_TEXT是一个自定义的标识符,二者之间的文本将被认为是一个文件的内容,这个文件作为cat > readme.txt的输入参数。 这是一种被称为here document的技术。

    这种方法有一点优势就是在脚本里写的文本内容的格式与想要呈现在文本文件中的一模一样。上一种方法则要求内容的第一行必须在echo的同一行。

    区分单引号与双引号

    Shell中双引号之间的内容会被进行变量展开和命令执行,如果想原样保留文本字符串,应该使用单引号(这种单双引号的区分在别的语言里也有,如PHP、Perl之类的脚本语言)。

    例如:

    echo "Your working directory can be read from the variable $PWD." >> readme.txt
    

    cat > readme.txt << END_TEXT
    Your working directory can be read from the variable $PWD.
    END_TEXT
    

    产生的readme.txt内容都是类似这样的:

    Your working directory can be read from the variable /Users/shengbin/Desktop.
    

    但实际希望的内容是:

    Your working directory can be read from the variable $PWD.
    

    所以正确的脚本应该这么写:

    echo 'Your working directory can be read from the variable $PWD.' >> readme.txt
    

    cat > readme.txt << 'END_TEXT'
    Your working directory can be read from the variable $PWD.
    END_TEXT
    

    没错,把起始标识符用单引号包起来,就会使其中的文本被认为是在单引号之间。

    展开全文
  • Linux Shell脚本编程--curl命令详解

    万次阅读 多人点赞 2013-08-25 20:36:14
    curl命令是一个功能强大的网络工具,它能够通过http、ftp等方式下载文件,也能够上传文件。其实curl远不止前面所说的那些功能,大家可以通过man curl阅读手册页获取更多的信息。类似的工具还有wget。 curl命令使用了...

    用途说明

    curl命令是一个功能强大的网络工具,它能够通过http、ftp等方式下载文件,也能够上传文件。其实curl远不止前面所说的那些功能,大家可以通过man curl阅读手册页获取更多的信息。类似的工具还有wget。

    curl命令使用了libcurl库来实现,libcurl库常用在C程序中用来处理HTTP请求,curlpp是libcurl的一个C++封装,这几个东西可以用在抓取网页、网络监控等方面的开发,而curl命令可以帮助来解决开发过程中遇到的问题。

    常用参数

    curl命令参数很多,这里只列出我曾经用过、特别是在shell脚本中用到过的那些。

    -A:随意指定自己这次访问所宣称的自己的浏览器信息

    -b/--cookie <name=string/file> cookie字符串或文件读取位置,使用option来把上次的cookie信息追加到http request里面去。

    -c/--cookie-jar <file> 操作结束后把cookie写入到这个文件中

    -C/--continue-at <offset>  断点续转

    -d/--data <data>   HTTP POST方式传送数据

    -D/--dump-header <file> 把header信息写入到该文件中

    -F/--form <name=content> 模拟http表单提交数据

    -v/--verbose 小写的v参数,用于打印更多信息,包括发送的请求信息,这在调试脚本是特别有用。

    -m/--max-time <seconds> 指定处理的最大时长

    -H/--header <header> 指定请求头参数

    -s/--slient 减少输出的信息,比如进度

    --connect-timeout <seconds> 指定尝试连接的最大时长

    -x/--proxy <proxyhost[:port]> 指定代理服务器地址和端口,端口默认为1080

    -T/--upload-file <file> 指定上传文件路径

    -o/--output <file> 指定输出文件名称

    --retry <num> 指定重试次数

    -e/--referer <URL> 指定引用地址

    -I/--head 仅返回头部信息,使用HEAD请求

    -u/--user <user[:password]>设置服务器的用户和密码

    -O:按照服务器上的文件名,自动存在本地

    -r/--range <range>检索来自HTTP/1.1或FTP服务器字节范围

    -T/--upload-file <file> 上传文件

    使用示例

    1,抓取页面内容到一个文件中

      [root@xi mytest]# curl -o home.html http://www.baidu.com   --将百度首页内容抓下到home.html中

         [root@xi mytest]#curl -o #2_#1.jpghttp://cgi2.tky.3web.ne.jp/~{A,B}/[001-201].JPG

               由于A/B下的文件名都是001,002...,201,下载下来的文件重名,这样,自定义出来下载下来的文件名,就变成了这样:原来: A/001.JPG —-> 下载后: 001-A.JPG 原来: B/001.JPG ---> 下载后: 001-B.JPG

     

    2,用-O(大写的),后面的url要具体到某个文件,不然抓不下来。还可以用正则来抓取东西

      [root@xi mytest]# curl -O http://www.baidu.com/img/bdlogo.gif

             运行结果如下:

            % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                                                       Dload  Upload   Total   Spent    Left  Speed
           100  1575  100  1575    0     0  14940      0 --:--:-- --:--:-- --:--:-- 1538k

              会在当前执行目录中生成一张bdlogo.gif的图片。

      [root@xi mytest]# curl -O http://XXXXX/screen[1-10].JPG  --下载screen1.jpg~screen10.jpg

    3,模拟表单信息,模拟登录,保存cookie信息

      [root@xi mytest]# curl -c ./cookie_c.txt -F log=aaaa -F pwd=******http://www.XXXX.com/wp-login.php

    4,模拟表单信息,模拟登录,保存头信息

      [root@xi mytest]# curl -D ./cookie_D.txt -F log=aaaa -F pwd=******http://www.XXXX.com/wp-login.php

      -c(小写)产生的cookie和-D里面的cookie是不一样的。

    5,使用cookie文件

      [root@xi mytest]# curl -b ./cookie_c.txt http://www.XXXX.com/wp-admin

    6,断点续传,-C(大写)

      [root@xi mytest]# curl -C -O http://www.baidu.com/img/bdlogo.gif

    7,传送数据,最好用登录页面测试,因为你传值过去后,curl回抓数据,你可以看到你传值有没有成功

      [root@xi mytest]# curl -d log=aaaa http://www.XXXX.com/wp-login.php

    8,显示抓取错误,下面这个例子,很清楚的表明了。

      [root@xi mytest]# curl -fhttp://www.XXXX.com/asdf

      curl: (22) The requested URL returned error: 404

      [root@xi mytest]# curlhttp://www.XXXX.com/asdf

      <HTML><HEAD><TITLE>404,not found</TITLE>

    9,伪造来源地址,有的网站会判断,请求来源地址,防止盗链。

      [root@xi mytest]# curl -ehttp://localhosthttp://www.XXXX.com/wp-login.php

    10,当我们经常用curl去搞人家东西的时候,人家会把你的IP给屏蔽掉的,这个时候,我们可以用代理

      [root@xi mytest]# curl -x 24.10.28.84:32779 -o home.htmlhttp://www.XXXX.com

    11,比较大的东西,我们可以分段下载

      [root@xi mytest]# curl -r 0-100 -o img.part1http://www.XXXX.com/wp-content/uploads/2010/09/compare_varnish.jpg

      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

      Dload  Upload   Total   Spent    Left  Speed

      100   101  100   101    0     0    105      0 --:--:-- --:--:-- --:--:--     0

      [root@xi mytest]# curl -r 100-200 -o img.part2http://www.XXXX.com/wp-ontent/uploads/2010/09/compare_varnish.jpg

      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

      Dload  Upload   Total   Spent    Left  Speed

      100   101  100   101    0     0     57      0  0:00:01  0:00:01 --:--:--     0

      [root@xi mytest]# curl -r 200- -o img.part3http://www.XXXX.com/wp-content/uploads/2010/09/compare_varnish.jpg

      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

      Dload  Upload   Total   Spent    Left  Speed

      100  104k  100  104k    0     0  52793      0  0:00:02  0:00:02 --:--:-- 88961

      [root@xi mytest]# ls |grep part | xargs du -sh

      4.0K    one.part1

      112K    three.part3

      4.0K    two.part2

      用的时候,把他们cat一下就OK,cat img.part* >img.jpg

    12,不会显示下载进度信息

      [root@xi mytest]# curl -s -o aaa.jpg http://www.baidu.com/img/bdlogo.gif

    13,显示下载进度条

      [root@xi mytest]# curl  -0 http://www.baidu.com/img/bdlogo.gif     (以http1.0协议请求)

    ####################################################################### 100.0%

    14,通过ftp下载文件

      [xifj@Xi ~]$ curl -u用户名:密码 -Ohttp://www.XXXX.com/demo/curtain/bbstudy_files/style.css

      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

      Dload  Upload   Total   Spent    Left  Speed

      101  1934  101  1934    0     0   3184      0 --:--:-- --:--:-- --:--:--  7136

      [xifj@Xi ~]$ curl -u 用户名:密码 -O http://www.XXXX.com/demo/curtain/bbstudy_files/style.css

      % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

      Dload  Upload   Total   Spent    Left  Speed

      101  1934  101  1934    0     0   3184      0 --:--:-- --:--:-- --:--:--  7136

      或者用下面的方式

      [xifj@Xi ~]$ curl -O ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/style.css

      [xifj@Xi ~]$ curl -O ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/style.css

      15,通过ftp上传

      [xifj@Xi ~]$ curl -T test.sql ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/

      [xifj@Xi ~]$ curl -T test.sql ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/

     

    15,模拟浏览器头

      [xifj@Xi ~]$ curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -x 123.45.67.89:1080 -o page.html -D cookie0001.txthttp://www.www.baidu.com

    16,PUT、GET、POST

    比如 curl -T localfile http://cgi2.tky.3web.ne.jp/~zz/abc.cgi,这时候,使用的协议是HTTP的PUT method 
    刚才说到PUT,自然想起来了其他几种methos--GET和POST。 
    http提交一个表单,比较常用的是POST模式和GET模式 
    GET模式什么option都不用,只需要把变量写在url里面就可以了
    比如:
    curl http://www.yahoo.com/login.cgi?user=nick&password=12345 
    而POST模式的option则是 -d 
    比如,curl -d "user=nick&password=12345" http://www.yahoo.com/login.cgi

    就相当于向这个站点发出一次登陆申请~~~~~ 
    到底该用GET模式还是POST模式,要看对面服务器的程序设定。 
    一点需要注意的是,POST模式下的文件上的文件上传,比如
    <form method="POST" enctype="multipar/form-data" action="http://cgi2.tky.3web.ne.jp/~zz/up_file.cgi">
    <input type=file name=upload>
    <input type=submit name=nick value="go">
    </form>
    这样一个HTTP表单,我们要用curl进行模拟,就该是这样的语法:
    curl -F upload=@localfile -F nick=go http://cgi2.tky.3web.ne.jp/~zz/up_file.cgi 

    展开全文
  • 使用Shell脚本实现SFTP下载文件

    千次阅读 2015-04-15 20:12:06
    生成密钥对 ssh-keygen –d Generating public/private dsa key pair. Enter file in which to save the key (/home/local_user/.ssh/id_dsa): (直接按回车不要输入任何东西。注意这个路径/home/local_user/....
    一.生成密钥对
    ssh-keygen –d
    Generating public/private dsa key pair.


    Enter file in which to save the key (/home/local_user/.ssh/id_dsa): (直接按回车不要输入任何东西。注意这个路径/home/local_user/.ssh/id_dsa)
    # 按回车保存为: /home/local_user/.ssh/id_dsa,即当前用户local_user的私钥


    Enter passphrase (empty for no passphrase):  (直接按回车不要输入任何东西)
    # 按回车,表示读取密钥时不需要密钥的密码


    Enter same passphrase again:  (直接按回车不要输入任何东西)
    # 确认密钥的密码,必须和上面的输入相同


    Your identification has been saved in /home/local_user/.ssh/id_dsa.
    # 私钥保存信息


    Your public key has been saved in /home/local_user/.ssh/id_dsa.pub.
    # 公钥保存信息


    The key fingerprint is:
    ec:41:e8:08:38:0b:f8:1e:bc:92:98:32:fc:d7:69:7d ...
    # 密钥指纹




    二.分发公钥


    为了使用密钥,必须将公钥分发到欲登录的远程服务器上,这里远程服务器记为remote_hos
    t,欲登录的远程用户记为remote_user


    1.copy公钥到欲登录的远程服务器的远程用户的家目录下,例如:


    copy id_dsa.pub到remote_host:/home/remote_user/.ssh/(注意这个路径)


    若目录/home/remote_user/.ssh/不存在,请先创建之.


    2.将copy来的公钥文件改名为authorized_keys


    3.修改公钥文件的访问权限


    chmod 644 authorized_keys






    示例
    date=` date +%Y-%m-%d `
    ##########################################
    #                 下载文件               #
    ##########################################
    #sftp -oPort=ssh端口号 用户名@IP地址 << EOF
    sftp -oPort=29 root@****** << EOF
    #cd 服务器文件的存放路径
    cd /var/MeMediaBackup/
    # lcd 本地文件存放路径
    lcd /backup/memediadbbackup/
    #-get 服务器文件的存放路径下的文件名
    -get memediadb$date.tar.gz
    ##########################################
    #            减压并导入数据库            #
    ##########################################
    tar -zxvf memediadb$date.tar.gz
    /usr/bin/mysql -u root -pmemediahegg.0 -h ****** memediadb < /backup/memediadbbackup/memediadb$date.sql
    ##########################################
    #          删除减压后的sql文件           #
    ##########################################
    rm -rf memediadb$date.sql
    quit
    EOF
    展开全文
  • shell脚本下制作文件升级系统

    千次阅读 2012-09-01 10:17:41
    目前的代码只是包含了制作文件镜像,生成文件系统的部分 #!/bin/sh #LOG="./version_make.log" ROOT_PATH="./update_file/network_update" LOG="./update_file/version_make.log" VER_F="./rootfs_V1123/home/...

    目前的代码只是包含了制作文件镜像,生成文件系统的部分

    #!/bin/sh
    #LOG="./version_make.log"
    ROOT_PATH="./update_file/network_update"
    LOG="./update_file/version_make.log"
    VER_F="./rootfs_V1123/home/version"
    #**************************************************************************
    
    VENDOR_LIST="base test"
    valid=0
    
    VENDOR=$1
    VER=$2
    DATE=$3
    mkramdisk()
    {
    	echo "make filesystem"
    	rm $VER_F
    	date >> $VER_F
    	echo $VER >> $VER_F
    	echo $DATE >> $VER_F #date use to display the ver
    	make all
    	cp -f rootfs_ext2.gz mkupdata_file/rootfs.jffs2
    	
    	return 0
    }
    
    mkjffs2()
    {
    	echo "make filesystem"
    
    	#for 128KB block
    	#mkfs.jffs2 -d rootfs_V1123 -o rootfs.jffs2 -e 0x20000
    	#for 64KB block
    	#mkfs.jffs2 -d rootfs_V1123 -o rootfs.jffs2
    
    	#use read-only system
    	mkfs.cramfs rootfs_V1123 rootfs.jffs2
    
    	cp -f rootfs.jffs2 mkupdata_file/
    	#cp -f rootfs.jffs2 /tftpboot/
    
    	return 0
    }
    #**************************************************************************
    
    
    if [ -z $VENDOR ]; then
    	echo "Usage: go.sh vendor ver"
    	echo "    vendor list: $VENDOR_LIST"
    	exit
    fi
    
    if [ -z $VER ]; then
    	echo "Usage: go.sh vendor ver"
    	exit
    fi
    
    for n in $VENDOR_LIST; do
    	if [ $VENDOR = $n ]; then
    		valid=1
    		break;
    	fi
    done
    
    if [ $valid = 0 ]; then
    	echo "Invalid vendor: $VENDOR"
    	echo "    option list: $VENDOR_LIST"
    	exit
    fi
    #**************make log******************************
    date >> $LOG
    echo "make MDVRB_v$VER _$VENDOR.bin" >> $LOG
    #cp "version_make.log" $LOG1
    #****************************************************
    echo "copy special file for $VENDOR"
    
    #copy common file
    rm -rf rootfs_V1123/root/tl_app/data/pics
    tar xfz vendor/common/pics.tgz -C rootfs_V1123/root/tl_app/data/
    
    cp -f vendor/common/logo_576.png rootfs_V1123/root/tl_app/data/pics/
    cp -fr vendor/common/my_icon rootfs_V1123/root/tl_app/data/pics/
    cp -f vendor/common/uImage_mr9104 mkupdata_file/uImage_hs3512
    cp -f vendor/common/hwtest rootfs_V1123/sbin
    #cp -f vendor/common/u-boot_combo2.bin mkupdata_file/u-boot_combo2.bin
    
    #cp -f vendor/common/tw_2864.ko rootfs_V1123/root/tl_modules/our_modules/
    
    if [ $VENDOR = "canrun" ]; then
    	echo "copy 32x32 font"
    	cp -f vendor/$VENDOR/heigb2312.DZK rootfs_V1123/root/tl_app/data/fonts/
    	cp -f vendor/$VENDOR/logo_576.png rootfs_V1123/root/tl_app/data/pics/
    	cp -f vendor/$VENDOR/u-boot_combo2_carrun.bin mkupdata_file/u-boot_combo2.bin
    fi
    
    if [ $VENDOR = "honghui" ]; then
    	echo "copy honghui logo"
    	cp -f vendor/$VENDOR/logo_576.png rootfs_V1123/root/tl_app/data/pics/
    fi
    
    if [ $VENDOR = "bizi" ]; then
    	echo "### using 16K audio ###"
    	cp -f vendor/bizi/tw_2864_54M_16K.ko rootfs_V1123/root/tl_modules/our_modules/tw_2864.ko
    fi
    
    if [ $? -ne 0 ]; then
    	echo "###### copy file error ######"
    	exit -1
    fi
    
    
    mkramdisk
    
    
    echo "vendor: $VENDOR, version:$VER"
    
    echo "make update file"
    cd mkupdata_file
    ./gen.sh $VENDOR $VER  #升级镜像 		
    
    if [ $VER -lt 100 ]; then
    	cp -f DVR.bin ../MDVRB_v0$VER\_$VENDOR.bin
    else
    	cp -f DVR.bin ../MDVRB_v$VER\_$VENDOR.bin
    fi
    
    cd -
    mv MDVRB_v$VER\_$VENDOR.bin $ROOT_PATH/
    
    ./crc_add.sh $VER   #添加crc校验位
    	
    if [ $VENDOR = "canrun" ]; then
    	echo "delete font"
    	rm -f rootfs_V1123/root/tl_app/data/fonts/heigb2312.DZK
    fi
    
    


     

    展开全文
  • shell之创建文件内容

    千次阅读 2019-07-06 03:52:53
    shell之创建文件夹: [root@vbox-nginx shell_command]# vi ./mkdir.sh #!/bin/sh parentDir="/media/sf_Project/self/smarty-frame/application/$1" fileName=$2 dirAndName=$parentDir/$fileName if ...
  • 常用shell脚本

    万次阅读 多人点赞 2019-03-01 16:27:33
    脚本1】打印形状 打印等腰三角形、直角三角形、倒直角三角形、菱形 #!/bin/bash # 等腰三角形 read -p "Please input the length: " n for i in `seq 1 $n` do for ((j=$n;j&gt;i;j--)) do ...
  • 一些简单的shell脚本实例

    千次阅读 多人点赞 2020-03-13 23:47:17
    # 脚本生成一个 100 以内的随机数,提示用户猜数字,根据用户的输入,提示用户猜对了, # 猜小了或猜大了,直至用户猜对脚本结束。 # RANDOM 为系统自带的系统变量,值为 0‐32767的随机数 # 使用取余算法将随机数变为 1...
  • Centos7.5-shell脚本的基础

    千次阅读 2018-10-12 13:51:25
    本节所讲内容: 19.1 shell 基本语法 19.2 SHELL变量及运用 19.3 数学运算 19.4 实战-升级系统中的java版本到1.8版本-为后期安装Hadoop集群做准备 19.1 shell 基本语法 19.1.1 什么是shell? Shell是一个命令解释器...
  • Linux shell 脚本实例

    千次阅读 2011-06-10 14:15:00
    转自:http://hi.baidu.com/lssbing/blog/item/11ee3aec290eae3627979106.html 1. 写一个脚本,利用循环计算10的阶乘 #!/bin/shfactorial=1for a in `seq 1 10`do factorial=`expr $factorial /* $a`doneecho
  • shell脚本telnet登录

    千次阅读 2011-08-27 15:43:34
    #!/bin/bash ( echo "user" sleep 2 echo "passwd" sleep 3 echo "do something in remote device" sleep 3 e
  • Shell脚本与Makefile

    2018-01-27 10:40:03
    Shell Script ,Shell脚本与Windows/Dos下的批处理相似,也就是用各类命令预先放入到一个文件中,方便一次性执行的一个程序文件,主要是方便管理员进行设置或者管理用的。但是它比Windows下的批处理更强大,比用...
  • 【马哥私房菜】亲情推出《linux shell脚本攻略》视频教程 【马哥私房菜】亲情推出 git 视频教程 《Linux命令行与shell脚本编程大全》第三版 学习笔记 第1部分 Part 1 Linux 命令行 第1 章 初识Linux shell...
  • Shell脚本详解---一篇搞定

    千次阅读 多人点赞 2018-10-04 18:06:54
    有道云分享链接 1.1 前言 ...每一个合格 的Linux系统管理员或运维工程师,都需要能够熟练地编写Shell脚本语言,并能够阅 读系统及各类软件附带的Shell脚本内容。只有这样才能提升运维人员的工...
  • 将Vim编辑器打造成Bash Shell脚本IDE

    千次阅读 2017-05-02 19:59:31
    brew install vim --with-lua --with-override-system-vi安装 Bash-support 插件下载bash-support插件,http://www.vim.org/scripts/script.php?script_id=365,此页面上选择一个最新的。解压缩后copy到~/.vim下面。
  • 前面已经有了一些linux的基础知识,但是shell脚本这里我们还是缺失的,那么这个系列就来补上这一块。废话不多说,开始学习shell编程吧。 先来学shell脚本能干什么? shell scripts 的用处   这里面需要了解的...
  • 基于linux下的shell脚本的编写

    万次阅读 2018-06-14 04:34:55
    (sh代表shell),扩展名并不影响脚本执行,见名知意就好,如果你用phpshell 脚c脚本练习:[root@localhost ~]# yum install gcc -y 安装gcc编译[root@localhost ~]# vim hello.c 编辑c语言文[root@localhos...
  • PHP执行shell脚本

    2013-09-29 18:39:24
    使用sysytem() exec() 能执行 shell脚本 当遇到多行的时候先生成 .bat文件 (unix 生成.sh)文件 再 system('test.bat')
  • 文件内容统计命令 wc命令 wc命令的功能为统计指定文件中的字节数、字数、行数, 并将统计结果显示输出。 语法:wc [选项] 文件… 说明:该命令统计给定文件中的字节数、字数、行数。如果没有给出文件名,则从...
  • 这是我见过最牛逼的Shell脚本

    千次阅读 多人点赞 2019-01-30 19:42:36
    #!/bin/bash APP_NAME=&amp;quot;${0##*[\\/]}&amp;quot; APP_VERSION=&amp;quot;1.0&amp;quot; #颜色定义 iSumColor=7 #颜色总数 cRed=1 #红色 cGreen=2 #绿色 ...cWhite=7
  • shell脚本100例

    千次阅读 2019-03-11 20:13:54
    101个shell脚本 ZeroOne01关注2人评论82091人阅读2017-11-30 22:11:55 本文用于记录学习和日常中使用过的shell脚本 【脚本1】打印形状 打印等腰三角形、直角三角形、倒直角三角形、菱形 #!/bin/bash 等腰三角形 read...
1 2 3 4 5 ... 20
收藏数 27,630
精华内容 11,052
关键字:

php 生成shell脚本文件内容