首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

bash 脚本嵌入 expect

执行一些命令时总是需要交互式输入信息,如 等等,这可以起到提醒用户作用,也更加保险。...由于 并没有默认安装,所以需要先安装: sudo apt install expect 另外因为 脚本有专用解释器,所以在脚本第一行不是: #!/bin/bash 而是: #!.../usr/bin/expect -f 如此一来,我们需要将用到交互式操作命令均抽离出来分别写脚本,这样无疑会造成麻烦,如果交互式命令很多时,会需要写很多脚本。...因此需要想办法将 脚本嵌入到 脚本。 在执行 脚本时有三种方法,第一种: ./bash_script.bash 这要求脚本有可执行权限并且第一行是: #!.../bin/bash 第二种: bash bash_script.bash 这种不要求可执行权限,第一行也没有强制要求。

2K20

详解bash脚本调试机制

以调试模式运行脚本 通过bash -x 方式可以在调试模式下运行整个脚本, bash会在在运行前打印出了每一行命令, 而且每行前面用+号表明命令嵌套层数. > bash -x debug.sh...如果脚本比较复杂, 我们可以通过使用环境变量PS4配合调试用内置变量用于输出更加详细信息: > export PS4='+${BASH_SOURCE}:${LINENO}:${FUNCNAME[0]...() { func1 } func3 () { func2 } func3 caller 0 # 必须在函数调用 否则无输出 exit 0 运行该脚本可以得到以下输出: Level0...:55:37 PM CST > set +vx # 取消参数 set +vx 通过使用-f选项可以显著减少脚本转义字符: > ls ?...* > ll * -rw-rw-r-- 1 remilia remilia 0 Mar 1 20:09 '*' 到此这篇关于详解bash脚本调试机制文章就介绍到这了,更多相关bash 脚本调试

1.3K31
您找到你想要的搜索结果了吗?
是的
没有找到

shell脚本sed用法

本文主要介绍sed一些基本用法,并通过shell脚本演示sed使用实例。...:后跟保存了sed指令文件 -i:直接对内容进行修改,不加-i时默认只是预览,不会对文件做实际修改 -n:取消默认输出sed默认会输出所有文本内容,使用-n参数后只显示处理过sed编辑命令... sed -n ‘/xyz/,+2w 2.txt’ 1.txt #将1.txt从匹配xyz行及其后2行内容,写入到2.txt 示例9:sed 在shell脚本使用...#输出脚本用法   exit fi sed -i “s#$1#$2#”  $3          #将 旧内容进行替换,当$1和$2包含”/”时,替换指令定界符需要更换为其他符号 实例2:删除文件空白行.../bin/bash if [ $# -ne 2 ];then               #判断用户输入,如果参数个数不为2则打印脚本用法   echo “Usage:$0 + old-file

3.8K20

处理Apache日志Bash脚本

以往,我用是AWStats日志分析软件。它可以生成很详细报表,但是不太容易定制,得不到某些想要信息。所以,我就决定自己写一个Bash脚本,统计服务器日志,顺便温习一下脚本知识。...下面就是我日志分析脚本,虽然它还不是通用,但是我相信里面用到命令,足以满足一般日志分析需求,同时也是很好学习Bash实例。如果下面的每一个命令你都知道,我觉得可以堪称熟练使用Bash了。...二、为什么要用Bash 很多计算机语言,都可以用来完成这个任务。但是,如果只是简单日志分析,我觉得Bash脚本是最合适工具。...二是"功能强",Bash脚本设计目的,就是为了处理输入和输出,尤其是单行文本,所以非常合适处理日志文件,各种现成参数加上管道机制,威力无穷。...编写时候,我假定这个脚本和log.awk脚本与日志文件在同一个目录,而且这两个脚本都具有执行权限。 年度排名处理与此类似,就不再赘述了。

1.2K50

Bash 脚本,特殊变量$0到底是什么?

Bash 脚本,$0 是一个特殊变量,它代表当前脚本路径和名称。这个变量用于表示脚本自身,它是 Bash 环境一个重要组成部分。$0 变量是一个只读变量,无法更改。...图片在 Bash 脚本,$0 变量通常用于以下情况:1. 显示脚本名称和路径可以使用 $0 变量来显示脚本名称和路径。通常,这种情况下,我们使用 echo 命令来输出脚本名称和路径。.../bin/bashecho "当前脚本名称是 `$0`"echo "当前脚本路径是 $(dirname "`$0`")"在这个例子,dirname 命令将输出 $0 路径目录部分,而 echo...命令将输出 $0 变量文件名部分。...否则,Bash 将不会展开它,并输出整个字符串。$0 变量也可以用于获取命令行参数程序名称。例如,如果我们执行以下命令:.

1.9K00

如何从Bash脚本本身获得其所在目录

问: 如何从Bash脚本本身获得其所在目录? 我想使用Bash脚本作为另一个应用程序启动器。我想把工作目录改为Bash脚本所在目录,以便我可以对该目录下文件进行操作,像这样: $ ....但是在以相对路径方式去执行脚本时,获取目录信息是相对路径,不能满足其他需要获取绝对路径场景。 如果要获取绝对路径,可以使用如下方法: #!...$script_dir 其中第3行代码,无论从何处调用它,都将为你提供脚本完整目录路径。...测试结果如下: 另外,可以根据第一种方法结合使用 realpath 命令,也可获取脚本所在目录绝对路径: #!.../(点-斜杠),以便在bash运行它 shell脚本对编码和行尾符敏感吗

24520

编写快速安全Bash脚本建议

我们会包含: 一些bash基础知识(“你怎么写一个for循环”) 杂项事宜(“总是引用你bash变量”) bash脚本安全提示(“总是使用set -u”) 如果你编写shell脚本,并且你没有阅读这篇文章其他任何内容...使用它来使您shell脚本更好! 我们会像讨论编程语言一样讨论bash,因为,怎么说呢,它就是。 这篇文章目标不是bash编程详解。我不会在bash做复杂编程,也真的不计划学习如何去做。...还有 局部变量 ,它们作用域只能存在于bash函数。 我基本上从来没有使用过这样函数(不像我写其他编程语言),我从来没有使用过局部变量。 for循环 以下是我在bash编写循环方法。...您也可以使用反引号或$()来插入命令输出。 OUTPUT=`command` # or OUTPUT=$(command) if 语句 在 bash If 语句是相当让人讨厌去记它。...由于某种原因,fg 需要一个 “job ID”(这就是 jobs 打印输出)而不是一个 PID。 谁知道 Bash 为什么这样子呢。

1.8K80

如何在 Bash Shell 脚本显示对话框

这个教程给出几个如何使用类似zenity和whiptail工具在Bash Shell 脚本中提供消息/对话框例子。使用这些工具,你脚本能够告知用户当前程序运行状态并能与用户进行交互。...Zenity 工具 在Ubuntu安装zenity,运行: ? 用zenity创建消息框或者对话框命令是不言自明,我们会给你提供一些例子来参考。 创建消息框 ? ?...创建输入框并将输入值保存到变量 ? ? 输入后,值会保存在变量 $a 。 这是一个获取用户姓名并显示实际事例。 ? 这些是运行前面脚本截图。 ? 框1 ? 输入框 ? 输入框 ? 输入框 ?...尝试使用输入值要注意一点是whiptail用stdout显示对话框,用stderr输出值。这样的话,如果你用 var=$(…),你就根本不会看到对话框,也不能获得输入值。...你想获取输入值任何whiptail命令也是如此。 创建菜单对话框 ? ? 这是一个请求用户输入一个文件夹路径并输出大小 shell 脚本。 ? 这是之前例子一些截图: ? 输入框 ?

2.5K10

bash变量

bash变量 <span style="display: inline !...<em>中</em>,变量是一个用来存储数据<em>的</em>实体。...在<em>bash</em><em>中</em>,变量分为环境变量(全局变量)和局部变量。 环境变量可以被子进程读取和修改,父进程对环境变量<em>的</em>修改会传递到子进程,而子进程对变量<em>的</em>修改不会传递到父进程。...: $ echo $zhang 55 $ unset zhang $ echo $zhang $ 环境变量 在交互式<em>bash</em><em>中</em>,还是使用环境变量多一些。...<em>bash</em>有一些默认<em>的</em>环境变量,使用env查看: $ env XDG_SESSION_ID=39513 TERM=xterm SHELL=/bin/<em>bash</em> # 省略 在<em>bash</em><em>中</em>,环境变量<em>的</em>变量名一般全部采用大写字母

2.2K80

linux c程序获取shell脚本输出

前言   Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认是,借助脚本确实能够极大简化一些编程工作。...方法就是fork一个子进程,并创建一个匿名管道,在子进程执行shell命令,并将其标准输出dup 到匿名管道输入端,父进程从管道读取,即可获得shell命令输出,代码如下:   /**   *...增强system函数,能够返回system调用输出   *   * @param[in] cmdstring 调用外部程序或脚本命令串   * @param[out] buf 返回外部命令结果缓冲区...小结   有统计数据表明,代码缺陷率是一定,与所使用语言无关。Linux提供了很多实用工具和脚本,在程序调用工具和脚本,无疑可以简化程序,从而降低代码缺陷数目。...Linux shell脚本也是一个强大工具,我们可以根据需要编制脚本,然后在程序调用自定义脚本

5.6K20

使用sed命令批量处理Makefile文件脚本

前面写了一篇文章《Linux C/C++工程可生成ELF、动/静态库文件通用Makefile》,里面的Makefile代码有个不好地方需要修改。...当编译.cpp文件时,使用STD_OPT变量仍然是编译.c文件时参数-std=c99,这个在C++是不支持。...1 sed命令简要说明 由于sed命令可用参数太多了,这里只列举脚本中用到几个参数: 1 2 3 sed -i:直接修改文件而不是将处理结果在屏幕上输出sed -e:多个操作action按顺序执行.../bin/bash # FileName: handle_makefile.sh # Description: Simple usage of sed command to modify...4 脚本管理 目前已经把这个脚本放在Github了,地址是https://github.com/vfhky/shell-tools,以后脚本更新或者更多好用脚本也都会加入到这个工程

10710

bash运行脚本几种方式 转

bash shell 脚本执行方法有多种,本文作一个总结,供大家学习参考。 假设我们编写好shell脚本文件名为hello.sh,文件位置在/data/shell目录并已有执行权限。...方法二:以绝对路径方式去执行bash shell脚本: /data/shell/hello.sh 方法三:直接使用bash 或sh 来执行bash shell脚本: cd /data/shell bash...方法四:在当前shell环境执行bash shell脚本: cd /data/shell . hello.sh 或 cd /data/shell source hello.sh 前三种方法执行shell...shell脚本执行完后子shell环境随即关闭,然后又回到父shell。而方法四则是在当前shell执行。 假设shell脚本文件为hello.sh 放在/root目录下。...也可以让shell脚本在现行shell执行: 4.现行shell执行 代码如下: [root@localhost ~]# . hello.sh hello guys!

2.2K10
领券