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

从bash脚本和cat文件打开编辑器到变量不起作用

基础概念

Bash 脚本是一种用于自动化任务的脚本语言,通常用于 Unix 和 Linux 系统。cat 是一个常用的命令行工具,用于连接文件并打印到标准输出设备(通常是终端屏幕)。

相关优势

  • Bash 脚本:易于编写和维护,可以快速执行一系列命令,适合自动化任务。
  • cat 命令:简单易用,适合查看和操作文本文件。

类型

  • Bash 脚本:通常以 .sh 结尾的文件。
  • cat 命令:属于 Unix/Linux 系统中的标准工具。

应用场景

  • Bash 脚本:自动化部署、系统监控、数据处理等。
  • cat 命令:查看文件内容、合并文件、重定向输出等。

问题描述

从 Bash 脚本中使用 cat 打开编辑器并将内容保存到变量不起作用。

原因分析

Bash 脚本中直接使用 cat 命令打开编辑器并将内容保存到变量是不可行的,因为 cat 命令本身并不支持这种操作。编辑器通常会创建一个新的进程,并且不会将内容直接输出到标准输出。

解决方案

可以使用 read 命令结合编辑器来实现这一功能。以下是一个示例脚本:

代码语言:txt
复制
#!/bin/bash

# 定义一个变量用于存储编辑器的内容
EDITOR_CONTENT=""

# 使用 read 命令调用编辑器,并将内容保存到变量中
read -e -p "请输入内容: " EDITOR_CONTENT

# 输出变量的内容
echo "编辑器的内容是: $EDITOR_CONTENT"

在这个示例中,read 命令的 -e 选项会调用默认的编辑器(通常是 vinano),用户可以在编辑器中输入内容,然后保存并退出。编辑器的内容会被保存到 EDITOR_CONTENT 变量中。

参考链接

希望这个解答能帮助你解决问题!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Kali Linux 网络扫描秘籍 第八章 自动化 Kali 工具

    此外,本节需要使用文本编辑器(如 VIM 或 Nano)将脚本写入文件系统。 有关编写脚本的更多信息,请参阅本书第一章中的“使用文本编辑器(VIM Nano)”秘籍。...操作步骤 下面的示例演示了如何使用 bash 脚本将漏洞扫描目标利用的任务串联一起。...因为可以 bash 终端执行 NSE 脚本 MSFCLI,所以可以轻松编写 shell 脚本来将这两个功能组合在一起。...因为该工具(如 MSFCLI)可以轻易 bash 终端调用,所以我们很容易构建一个脚本,将两个任务串联一起,将漏洞扫描与利用相结合。...第二个命令用于将 Netcat 可执行文件Windows-binaries文件夹复制 TFTP 目录。 现在我们执行.

    5.2K20

    Bash 读写文件 | Linux 中国

    在 Windows 上,有几种方法可以体验 Bash,包括微软官方支持的 Windows Subsystem for Linux(WSL)。 安装 Bash 后,打开你最喜欢的文本编辑器并准备开始。...使用 Bash 读取文件 除了是 shell 之外,Bash 还是一种脚本语言。有几种方法可以 Bash 中读取数据。你可以创建一种数据流并解析输出, 或者你可以将数据加载到内存中。...命令来将一个文件读入,这个行为称为 “sourcing”,英文原意为“一次性(试)采购”、“寻找供应商”、“获得”等,考虑 Bash 的语境发音,我建议可以翻译为“援引”,或有不当,供大家讨论参考...var 的变量记录,所以文件没有意义。...变量 var 也被设置导入。 在 Bash 中解析文件 另一种让数据“进入” Bash 的方法是将其解析为数据流。有很多方法可以做到这一点.

    3.6K20

    大数据学习之_02_Shell学习

    4.3 特殊变量:`$n` 1、基本语法 $n(功能描述:n为数字,$0代表该脚本名称,$1-$9代表第一第九个参数,十以上的参数需要用大括号包含,如${10}) 2、案例实操 (1)输出该脚本文件名称.../bin/bash #打印数字 for i in $* do     echo "banzhang love $i" done (2)比较$*$@区别 (a)$*$@都表示传递给函数或脚本的所有参数...cut 命令文件的每一行剪切字节、字符字段并将这些字节、字符字段输出。 1、基本用法 cut [选项参数] filename 说明:默认分隔符是制表符\t。 2、选项参数说明 ?...我们可以通过编辑器打开vim /etc/sudoers,sudoers的权限是0440,即只有root才能读。在你用root或sudo编辑后强行保存并退出(wq!)即可。...打开sudoers后,像如下那样加上自己的帐号保存后就可以了。 ? (1)搜索passwd文件以root关键字开头的所有行,并输出该行的第7列。

    1.5K20

    特别的往 Docker Container 中上传代码的技巧

    折腾服务器的时候常常会遇到一些将本地写的代码传上服务器的需求,利用 SFTP 工具(Filezilla、WinSCP 之类)较为麻烦,所以我通常的做法是先使用 Vim 编辑器打开目标的文件,再将本地的代码粘贴到终端...有时候希望基于服务器端的 Docker 容器的环境执行一些临时写的脚本代码,但许多 Docker 镜像的制作者为了减小镜像的体积,实际上并没有给它安装文本编辑器这种东西。...特别的技巧 想起了此前为了处理日志,通过 sed awk 处理各种数据流的操作,脑洞一开,想到了一个直接终端操作的简单办法。...原理是利用 cat 命令将终端的输入转化为数据流的输出(stream),然后使用I/O重定向符号 > 把 cat 的输出导向目标文件。 从此摆脱对编辑器的依赖了哈哈哈。...仔细思考,> 是 bash 本身的语法指令,这条指令的执行者是 bash;通过 sudo 程序提权执行的 cat,具有超级用户的权限,而 cat 在这里只负责输出,并没有读写功能,真正写文件的操作者 bash

    1.2K20

    Ubuntu 16.04 上 CUDA_10.0及cuDNN的安装

    (利用vi编辑器编辑保存文件) 在文件中输入一下内容: blacklist nouveau options nouveau modeset=0 b、执行: $ sudo update-initramfs...使用键盘上的Page UpPage Down键可以上下翻页;按下Insert键,可以见到窗口左下角有“Insert”字样,表示当前为插入编辑状态,这时键盘输入的内容将插入光标位置;再按下Insert.../bin/bash外复制其中,(before exit 0 )保存退出。 #!/bin/bash /sbin/modprobe nvidia if [ “?”...7) 设置环境变量。 终端中输入 $ sudo gedit /etc/profile 在打开文件末尾,添加以下两行。...这里有点与官方安装文档稍有不同,需要说明: 官方文档里说只需在终端中运行上述两条export语句即可,但如果不将它们不写入/etc/profile文件的话,这样的环境变量在你退出终端后就消失了,不起作用

    1.6K30

    Shell编程实战

    学习Shell所需的基础知识 熟练使用VIm编辑器,熟悉SSH终端等配置 在Linux下开发shell脚本用的最多的就是vim编辑器,熟练使用vim可以使得shell脚本开发事半功倍!...开机准备输入用户名密码,登录成功,所有的操作都是Shell解释并执行的。...注意文件的可执行权限,与用户身份 #清除脚本日志 cd /var/log cat /dev/null > messages echo "Logs cleaned up . done" Shell脚本语言的种类.../usr/bin/env python 执行Shell脚本的方式 bash 脚本名 sh 脚本名 此方法是脚本没有可执行权限时,或者文件头没指定解释器时用的方法 path/scriptName...Shell通过环境变量来确定命令提示符,也就是超哥前面说的PS1变量 环境变量可以在命令行中设置创建,但是用户退出命令行时变量值就会丢失,因此可以写入/etc/profile文件中,每次用户登录时,变量都会被初始化

    1K30

    《Linux命令行与shell脚本编程大全》第十九章 初识sedgawk

    文件中读取编辑命令 需要用-f选项来指定文件。...窍门:可以用.sed作为sed脚本文件的扩展名 19.1.2 gawk程序 它提供了一种编程语言而不只是编辑器命令,在gawk编程语言中,可以做: 1)定义变量保存数据 2)使用算术字符串操作符来处理数据...Ctrl+D会在bash中产生一个EOF字符,可以终止该程序。 3. 使用字段字段变量 它会自动给一行中的每个数据元素分配一个变量。...’ data.txt   // 读取包含xiaochongyong的行,写入write.txt $cat write.txt 2.文件读取数据 读取(read)命令(r)允许你将一个独立文件中的数据插入数据流中...格式如下: [address]f filename 在读取命令中使用地址区间,只能指定单独一个行号或文本模式地址,sed编辑器会将文件中的文本插入指定地址后。

    1.9K50

    一文吃透Linux提权

    cat /proc/version uname -a uname -mrs rpm -q kernel dmesg | grep Linux ls /boot | grep vmlinuz- 环境变量中可以收集什么信息...环境变量中可能存在密码或API密钥 cat /etc/profile cat /etc/bashrc cat ~/.bash_profile cat ~/.bashrc cat ~/.bash_logout...在没有补丁的情况下,管理员可以极大地影响在目标上转移执行漏洞利用的能力。考虑这些因素,如果管理员可以阻止将利用程序引入/或执行Linux文件系统上,则内核利用程序攻击将不再可行。...sh’ bash 以下命令将以root身份打开一个bash shell。...Cron脚本覆盖符号链接 如果可以修改由root执行的cron脚本,则可以非常轻松地获取shell: echo ‘cp /bin/bash /tmp/bash; chmod +s /tmp/bash

    5.5K42

    大数据学习之Linux基础

    文件系统层次化标准(File System Hierarchy Standard) 5.文本操作命令 vi全屏文本编辑器 全屏编辑器模式 1.打开文件 2.关闭文件 3.编辑模式 4.末行模式...重定向 shell 脚本编程 Bash 含有shell命令的文件三种运行方式 变量 引用 表达式 编写shell 脚本案例——添加用户脚本 逻辑判断 流程控制 if选择语句 while循环语句 for...vi全屏文本编辑器 打开对 vim的支持 yum install -y vim 全屏编辑器模式 编辑模式:按键具有编辑文本功能:默认打开进入编辑模式 输入模式:按键本身意义 末行模式:接受用户命令输入...跳到下一个 s查找并替换 # 语法 s/str1/str2/gi #替换查找当前光标处,文件末尾处 eg: ....,$d 删除当前光标末尾所有行 :n,md 删除第 n 行 m 行的所有内容 :n,my 复制第 n 行 m 行的所有内容 正则表达式 基本语法 grep: 显示匹配行 v: 反显示

    1.3K40

    Linux命令行的艺术

    为了方便地键入长命令,在设置你的编辑器后(如 export EDITOR=vim),键入 ctrl-x ctrl-e 会打开一个编辑器来编辑当前命令。...在 Bash 脚本中,使用 set -x 去调试输出,尽可能的使用严格模式,使用 set -e 令脚本在发生错误时退出而不是继续运行,使用 set -u 来检查是否使用了未赋值的变量,使用 set -o...检查变量是否存在:${name:?error message}。例如,当 Bash 脚本需要一个参数时,可以使用这样的代码 input_file=${1:?usage: $0 input_file}。...例如,对比本地文件 /etc/hosts 一个远程文件: 1 diff /etc/hosts <(ssh somehost cat /etc/hosts) 了解 Bash 中的“here documents...) printenv:打印环境变量(调试时或在使用脚本文件时很有用) look:查找以特定字符串开头的单词 cut、paste join:数据修改 fmt:格式化文本段落 pr:将文本格式化成页/列形式

    6.9K72

    3小时精通shell脚本

    这种方法是临时修改,只对当前窗口有效,重新打开一个新窗口就失效了。注意一定要加$PATH,这表示追加环境变量,否则你的其它环境变量就没有了。...根目录下使用ls -a可以看到.bashrc(个人环境变量),.bash_profile(个人用户环境变量),这两个文件都可以实现相同的功能,只不过前者是每打开一个新的窗口都会被加载一次,而后者在切换用户时加载一次...首先将之前ls -a查询的内容保存在文件1.txt中,然后使用exec 3< 1.txt将文件1.txt标识为3,类型是标准输入。现在执行grep .bash <&3,效果如下。...可以看到,标准输入指的是将3所指代的内容输入目标文件/命令,而标准输出则是目标文件/命令输出到标识3所指代文件,输入输出是相对于目标而言的。...shell脚本用文档编辑器就可以编写,给予可执行权限就可以执行。 新建a.sh。 #!

    50420

    shell(一)

    2.1创建shell脚本 我们创建shell脚本最常用的编辑器就是vivim,这也是程序员最喜欢的工具。上面我们讲了文件后缀是 .sh,那么内容都有些什么呢?...2.3.3.1脚本文件相关的变量 符号 意义 $0 获取当前执行的shell脚本文件名 $$ 获取执行shell脚本的进程号 $n 获取当前执行的shell脚本的第n个参数值,n=1..9,当n为0时表示脚本文件名...shell脚本中常用的两种重定向符号是 > >>,它们代表的都是将左侧的内容或输出结果,输入右侧的文件。不同的是 >是覆盖的形式执行, >>是追加的形式进行。...2>&1:综合了上面的12,会将标准输出标准错误的信息都输入一个文件中。...这两条命令其实还可以一起使用: bash test.sh 1>> test-ok 2>> test-err 最后会将正确输出的内容,输入 test-ok文件中;将报错信息输入 test-err文件

    3.4K50

    如何在Windows 10上安装Ruby并设置本地编程环境

    介绍 Ruby是一种动态编程语言,可用于编写从简单脚本游戏Web应用程序的任何内容。它于1993年首次在日本发布,但在2005年作为服务器端Web开发的语言获得了普及。...当计算机重新启动时,打开命令提示符并键入: bash 系统将提示您Windows应用商店安装Bash。这是一个免费下载,下载提取需要几分钟。...Microsoft建议您处理此文件夹中的文件。这样,您可以使用现有的Windows工具打开修改文件,并仍然可以Bash shell访问它们。...尝试Windows程序(如文本编辑器文件管理器IDE)访问Windows Subsystem for Linux文件系统的其他部分中的文件可能会导致数据损坏,并且不受支持。...一旦您对脚本的内容感到满意,请执行此命令以安装最新的RVM稳定版本: cat rvm.sh | bash -s stable 该脚本在Linux用户的主目录中创建一个名为.rvm的新目录。

    4.4K00

    嘘……这些bash命令鲜为人知,但是非常有用!

    Bash 中有一些强大的命令你可能不知道,即使你已经相当熟练地使用该语言,不过,所有这些命令都可以起到非常有用的作用,并且可以使您编写的 shell 脚本更简洁、更易于维护,并且比以前更强大。...read:询问用户的输入 read 命令允许您用户那里获取输入并将其存储在变量中。 #!/usr/bin/env bash echo "What is your name?"....png] 您会注意,上面的内容也会产生一些奇怪的间隔输出,这些输出与文件中的内容不一致,这可以通过在命令中添加-t选项来解决:mapfile #!....png] 最后,您可能会注意以下内容不起作用: #!.../usr/bin/env bash cat file.txt | mapfile -t file_var 这是因为mapfile管道右侧的命令在子 shell(或者换句话说,Bash 的新实例)中运行,

    52900
    领券