linux bash 脚本是个好东西,能用工具搞定的就尽量避免用手敲。这里记录下学习过程中的问题。 1、bash: ....dos 或 fileformat=unix 利用如下命令修改文件格式 :set ff=unix 或 :set fileformat=unix :wq (存盘退出) 最后再执行文件 2、shell脚本数组报错.../bin/bash 就ok了
/bin/bash(可执行程序的路径) #:注释行,不执行 chmod +x *.sh ./*.sh(独立执行) bash *.sh (可以没有执行权限) 练习:写一个脚本: 1.添加5个用户,...练习:写一个脚本: 1.使用一个变量保存一个用户名 2.删除此变量中的用户,且一并删除其家目录 3.显示“用户删除完成”类的信息。...else statement4 .... fi 测试脚本是否有语法错误: bash -n file.sh bash -x 脚本 单步执行命令 编写一个脚本...switch in value) statment .... ;; value2) statment .... ;; *) statment ..... ;; esac 由键盘输入一个字符.../bin/bash case $1 in -y|--verbose) debug=1 ;; *) 脚本编程: 顺序结构 选择结构 if:单分支、双分支的,多分支 case 循环结构
同时,read 命令还可以用来使程序暂时停下来等待用户输入回车。...从键盘让用户输入几个文件,脚本能够将此几个文件归档压缩成一个文件; #!...,完成以下功能: 说明:此脚本能于同一个repo文件中创建多个Yum源的指向; 1、接受一个文件名做为参数,此文件存放至/etc/yum.repos.d目录中,且文件名以.repo为后缀;要求,此文件不能事先存...,否则,报错; 2、在脚本中,提醒用户输入repo id;如果为quit,则退出脚本;否则,继续完成下面的步骤; 3、repo name以及baseurl的路径,而后以repo文件的格式将其保存至指定的文件中...,如果不存在,就退出; 2、如果用户指定的网卡存在,则让用户为其指定一个别名,此别名可以为空;如果不空,请确保其事先不存在,否则,要报错,并让用户重新输入; 3、在用户输入了一个正确的别名后,请用户输入地址和掩码
注:在编写脚本时,一定要注意空格 condition为true时命令1到命令3将会一直执行,知道条件为false ,例如: #!.../bin/bash x=1 while [ $x -le 5 ] do echo "Welcome $x times" x=$(( $x + 1 )) done 读取输入: while read...line do echo $line done while循环,经典的用法是搭配转向输入,读取文件的内容,做法如下: #!.../bin/bash while read line do echo $line done < /home/joshua/testfile 说明: 行2,使用read有标准输入读取数据,放入变量line...行4,把改行数据显示出来 行5,将/home/joshua/testfile的内容转向输入将给read读取。
/smtp.conf echo $key1 3、根据console输入条件执行 #!..."功能选项[4]: " option until [[ -z "$option" || "$option" =~ ^[0-4]$ ]]; do read -p "$option为无效的选项,请重新输入功能选项...3600) / 60 ))分钟$(( (SEC % 3600) % 60 ))秒\c" } b=`swap_seconds $a` echo $b 输出 持续时间: 16小时41分钟40秒 7、脚本命令行参数的传递与判断.../bin/bash main() { if [[ $# == 1 ]]; then case $1 in "-h") echo "脚本使用方法...仓库名2 ... tag名(tag命名规则为: *-v加数字)" exit ;; "--help") echo "脚本使用方法
1.sh #13教训 rm -rf * 不能随便用,要慎重,路径错了,没有备份,跑路 #14收获 / 根目录 home 家目录 uplooking 用户目录(本机用户密码都是uplooking) /home.../bin/bash #!.../bin/bash #15尝试写遍历一个目录下的文件名的脚本 cleanDir=/home/uplooking/save cleanDay=`date -d"7 days ago " +%Y%m%d `...cleanDay.tar.gz echo $cleanFile cd $cleanDir for file in $(ls *) do echo $file #变量保存的字符串 done #16教训 Linx下的文件名字最后面有空格是允许的...脚本自动执行去掉交互 sudo ...
shell 脚本中关于用户输入参数的处理 bash shell 脚本提供了3种从 用户处 获取数据的方法: 命令行参数(添加在命令后的数据) 命令行选项 直接从键盘读取输入 1 命令行参数 像 shell.../add.sh 10 20 本例向脚本 add.sh 传递了两个 命令行参数(10 和 20). 1.1 读取命令行参数 bash shell 中有一些特殊变量, 被称为 位置参数(positional...这里从略, 等有需要用到再回来补上. 3 获取用户输入 尽管 命令行选项 和 参数 是从 用户处 获取输入的一种重要方式, 但有时脚本的交互性还需更强一些....比如在脚本运行时问一个问题, 等待运行脚本的人来回答, bash shell 为此提供了 read 命令. 3.1 read 命令 read variable_name 从标准输入(键盘) 或 另一个文件描述符中...接受输入, 在收到输入后, read 会将数据存入变量中.
array=( "${array[@]}" "new element" )或array[${#array[*]}]="new element"
服务器的开发和管理离不开 Bash 脚本,掌握它需要学习大量的细节。 set命令是 Bash 脚本的重要环节,却常常被忽视,导致脚本的安全性和可维护性出问题。...本文介绍它的基本用法,让你可以更安心地使用 Bash 脚本。 一、简介 我们知道,Bash 执行脚本的时候,会创建一个新的 Shell。...$ set 二、set -u 执行脚本的时候,如果遇到不存在的变量,Bash 默认忽略它。 #!...set -o xtrace 四、Bash 的错误处理 如果脚本里面有运行失败的命令(返回值非0),Bash 默认会继续执行后面的命令。 #!...另一种办法是在执行 Bash 脚本的时候,从命令行传入这些参数。
过去三个月,我一直在写《Bash 脚本教程》,现在终于写完了。 ? Bash 是 Linux 和 Mac 的默认 Shell(命令行环境),系统管理和服务器开发都需要它。...我一共写了20节,Bash 脚本编程的主要语法,都包括在内了,日常使用应该足够。点击这个链接,现在就可以自由阅读和访问。也欢迎初学者使用这个教程,学习 Bash。 ?
/bin/bash # subshell.sh echo "We are outside the subshell." echo "Subshell level OUTSIDE subshell =...$BASH_SUBSHELL" echo; echo outer_variable=Outer global_variable= ( echo "We are inside the subshell.../bin/bash # allprofs.sh: Print all user profiles. FILE=.bashrc # File containing user profile..../bin/bash # subshell.sh # 在后台运行以确保并行执行 (ping -c 10 127.0.0.1 > /dev/null) & (ping -c 20 127.0.0.1 >...等同于: # ping -c 10 127.0.0.1 > /dev/null & # ping -c 20 127.0.0.1 > /dev/null & # 通过ps可以发现两条子命令都是当前脚本启动的子
在 中执行一些命令时总是需要交互式的输入信息,如 等等,这可以起到提醒用户的作用,也更加保险。...由于 并没有默认安装,所以需要先安装: sudo apt install expect 另外因为 脚本有专用的解释器,所以在脚本的第一行不是: #!/bin/bash 而是: #!.../usr/bin/expect -f 如此一来,我们需要将用到交互式操作的命令均抽离出来分别写脚本,这样无疑会造成麻烦,如果交互式的命令很多时,会需要写很多脚本。...因此需要想办法将 脚本嵌入到 脚本中。 在执行 脚本时有三种方法,第一种: ./bash_script.bash 这要求脚本有可执行权限并且第一行是: #!.../bin/bash 第二种: bash bash_script.bash 这种不要求可执行权限,第一行也没有强制的要求。
引用的意思是用引号括起一个字符串,以保护字符串中的特殊字符不被shell或shell脚本重新解释或扩展: # 在通配和正则模式中拥有特殊含义的*号在引用中失去了特殊意义 bash$ ls -l [Vv...507 May 4 14:25 vartrace.sh -rw-rw-r-- 1 bozo bozo 539 Apr 14 17:11 viewdata.sh bash...比如某些场景下引号的用途是保护shell命令参数,但仍然允许调用程序扩展特殊字符: bash$ cat file1.txt first name in file1.txt bash$ cat file2....txt First name in file2.txt bash$ grep '[Ff]irst name' *.txt file1.txt:first name in file1.txt file2
/gameser服务,请写一个脚本,当服务宕掉,脚本自动拉起gameser服务。 #!...运行脚本输入两个数得到如下结果: #sh xxx.sh 2 3 ** *** ***** !...用一行命令实现:查找当前目录下(含子目录),文件内容中含有sina且文件名以".config"结尾的文件 grep -lr "sina" ./ | grep -P "(.*)(\.config$)"...写脚本实现,可以用shell,perl等。...设计一个shell程序,在2012年12月23日凌晨3点备份并压缩前一天/svn目录的所有内容,存放在/root/bak目录里,且文件名为如下形式svn.2008.05.06.tar.gz,试写脚本。
1.任务描述: 写一个脚本实现如下功能: manageuser.sh --add user1,user2,user3,......manageuser.sh --help 要求,如果用户不存在,才能添加,并用户密码同用户名;如果delete存在用户,那么用户的家目录一同delete掉;提供--help进行用户提示。 #!.../bin/bash # if [ $# -lt 1 ] ; then echo "no args" exit 7 fi if [ $1 == "--add" ] ; then
服务器的开发和管理离不开 Bash 脚本,掌握它需要学习大量的细节。 set命令是 Bash 脚本的重要环节,却常常被忽视,导致脚本的安全性和可维护性出问题。...本文介绍它的基本用法,让你可以更安心地使用 Bash 脚本。 一、简介 我们知道,Bash 执行脚本的时候,会创建一个新的 Shell。...$ set 二、set -u 执行脚本的时候,如果遇到不存在的变量,Bash 默认忽略它。 #!...set -o xtrace 四、Bash的错误处理 如果脚本里面有运行失败的命令(返回值非0),Bash 默认会继续执行后面的命令。 #!...另一种办法是在执行 Bash 脚本的时候,从命令行传入这些参数。
大多数程序都在解决最终用户问题,为此通常需要从用户那里获取一些信息。在程序需要一个名字时,你需要提示用户输入该名字;程序需要一个名字时,你需要提示用户输入一系列名字。需要使用函数input( )。...函数input( )让程序暂停运行,等待用户输入一些文本。获取用户输入后,Python将其存储在一个变量中,以方便你使用。...每当你使用函数input( )时,都应指定清晰而易于明白的提示,准确的指出,你希望用户提供什么样子的信息------指出用户输入任何信息的提示符都行。...使用int( )来获取数值输入:处理数值信息时,求模运算符(%)是一个很有用的工具,它将两个数相除并返回余数。如果你使用的是Python 2.7,应使用函数raw-input( )来提示用户输入。...这个函数与Python 3中的input( )一样,也将输入解读为字符串。
算数扩张(Arithmetic Expansion)。通过使用反引号,双括号和let命令可以将字符串转换为数字表达式。
所以,我就决定自己写一个Bash脚本,统计服务器的日志,顺便温习一下脚本知识。 事实证明,这件事比我预想的难。虽然最终脚本只有20多行,但花了我整整一天,反复查看手册,确认用法和合适的参数。...下面就是我的日志分析脚本,虽然它还不是通用的,但是我相信里面用到的命令,足以满足一般的日志分析需求,同时也是很好的学习Bash的实例。如果下面的每一个命令你都知道,我觉得可以堪称熟练使用Bash了。...二、为什么要用Bash 很多计算机语言,都可以用来完成这个任务。但是,如果只是简单的日志分析,我觉得Bash脚本是最合适的工具。...主要原因有两个:一是"开发快",Bash脚本是各种Linux命令的组合,只要知道这些命令怎么用,就可以写脚本,基本上不用学习新的语法,而且它不用编译,直接运行,可以边写边试,对开发非常友好。...二是"功能强",Bash脚本的设计目的,就是为了处理输入和输出,尤其是单行的文本,所以非常合适处理日志文件,各种现成的参数加上管道机制,威力无穷。
◆ 前言 最近在学习bash脚本语法,但是如果对bash语法不是熟手的话,感觉非常容易出错,比如说:显示未定义的变量shell中变量没有定义,仍然是可以使用的,但是它的结果可能不是你所预期的。...后来就开始探索,如果用node脚本代替bash该多好啊,经过一天折腾逐渐发现一个神器,Google旗下的zx库,先别着急,我先不介绍这个库,我们先看看目前主流用node如何编写bash脚本,就知道为啥它是神器了...◆ node执行bash脚本: 勉强解决方案:child_process API 例如 child_process的API里面exec命令 const { exec } = require("child_process...脚本命令很多都是同步的。...◆ node执行bash脚本: 进阶方案 shelljs const shell = require('shelljs'); # 删除文件命令 shell.rm('-rf', 'out/Release
领取专属 10元无门槛券
手把手带您无忧上云