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

Linux:编写 Shell 脚本时如何优雅地处理函数返回状态,多行文本和脚本路径

三、使用 Heredoc 处理多行文本 在 Shell 脚本中,Heredoc("Here Document" 的缩写)是一种方便的方法,用于将多行字符串传递给命令或赋值给变量。...在 Shell 脚本中,Heredoc("Here Document" 的缩写)是一种方便的方法,用于将多行字符串传递给命令或赋值给变量。...EOF 在脚本中使用变量 你可以在 Heredoc 中使用脚本中的变量: bash #!/bin/bash name="Alice" cat <<EOF Hello, $name!...Heredoc 是 Shell 脚本中处理多行文本的强大工具,可以大大简化脚本的编写和维护。 四、获取脚本所在位置 在 Shell 脚本中,获取脚本所在的位置和调用者所在的位置是两个不同的概念。...总结 在 Shell 脚本中,正确处理函数返回状态、设计和使用 main 函数、利用 Heredoc 处理多行文本以及获取脚本所在位置是编写高质量脚本的重要技巧。

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

    heredoc细节妙用

    Here文档 here文档,又称作heredoc、hereis、here-字串或here-脚本,是一种在命令行shell(如sh、csh、ksh、bash、PowerShell和zsh)和程序语言(像Perl...一些语言允许在字串里执行变量替换和命令替换。 here文档最通用的语法是 的文字,然后再在单独的一行用相同的标识符关闭。...在Unix shell里,here文档通常用于给命令提供输入内容。 shell 在以下几个例子中,文字用here文档传递给 tr命令。...这允许在shell脚本中缩进here文档而不改变它们的值。(注意在命令行上可能会需要输入 Ctrl-v TAB来真正地输入一个制表符。下边的例子用空格模拟制表符;不要复制粘贴。)...:隔离 heredoc 的语法解析细节就和外层的shell调用( ``或者$(..))。

    66950

    Shell脚本编程_shell脚本编程100例pdf

    If-then-else语句 当if语句中的命令返回非零退出状态码时, bash shell会执行else部分中的命令。...每块命令都会根据命令是否会返回退出状态码0来执行。记住, bash shell会依次执行if语句,只有第一个返回退出状态码0的语句中的then部分会被执行。 可以使用test命令确定变量中是否有内容。...无需在if-then语句中声明test命令。注意,第一个方括号之后和第二个方括号之前必须加上一个空格,否则就会报错。 这个脚本中只用了大于号,没有出现错误,但结果是错的。...因此,它创建了一个名为hockey的文件。由于重定向的顺利完成, test命令返回了退出状态码0, if语句便以为所有命令都成功结束了。 要解决这个问题,就需要正确转义大于号。...可以在if语句中用双括号命令,也可以在脚本中的普通命令里使用来赋值。 注意,不需要将双括号中表达式里的大于号转义。这是双括号命令提供的另一个高级特性。

    2.2K30

    Permission denied (publickey) — 完美解决方法详解 ️

    Permission denied (publickey) — 完美解决方法详解 ️ 摘要 大家好,我是默语,今天我们要深入探讨如何解决SSH连接中常见的错误——Permission denied...私钥权限设置不正确:私钥文件权限太宽松,导致SSH拒绝使用该私钥。 SSH配置错误:SSH配置文件有误,未指定正确的密钥路径。 服务器端配置错误:服务器可能未正确配置接受公钥认证。 3....一般来说,公钥应该放置在用户目录的 .ssh/authorized_keys 文件中: # 在服务器端检查公钥文件 cat ~/.ssh/authorized_keys 如果没有该文件或者公钥不在其中,...~/.ssh/id_rsa 保存并退出文件后,尝试重新连接。...从公钥的上传、私钥权限的设置,到SSH配置的检查,每一步都至关重要。在遇到类似问题时,建议大家按步骤进行排查,确保每个环节都配置正确。 希望这篇文章能够帮助你快速解决SSH认证问题,提升开发效率。

    3.2K10

    git相关问题解析,你想要的都有🔥

    gitlab上项目里的提交信息统计的是正确的(猜测就是取得commit信息而已),在profile主页确没有统计到提交记录(测试发现应该是跟推送远程仓库时使用得ssh密钥有关系),具体的设置请看常用的SSH...如何查看".gitconfig"文件 在"Git Bash"命令行工具中输入“cd && ls -a”便可以看到如下信息 再通过“view .gitconfig”命令打开.gitconfig文件,即可查看该配置文件内容...": "填写获取到的bash路径", "terminal.integrated.automationShell.windows": "填写获取到的bash路径" where bash 命令在安全账户(...找到你想要修改的那个 commit,将行首的 pick 关键字修改为 edit。然后保存并退出。...其中HEAD指向最新放入仓库的版本 Remote: 远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换 重置提交 情况一、没有push到远程的情况(只是在本地commit

    1.3K20

    安装Git,并在客户端建立一个空项目并克隆

    分两大步,分别在服务器端(虚拟机中的linux)和客户端(真机中的Windows)中操作 一、步骤 1.1 服务器端 1.1.1 先从yum安装Git $ yum –y install git 1.1.2...     ) 1.2.5.2将公钥加入服务器列表(服务器)    CentOS 7默认列表在/root/.ssh/authorized_keys,使用vi 编辑此文件输入刚才复制的内容,保存退出。...若clone之后commit多此后仍然需要密码,执行5.3,若已经执行,检查公钥是否正确,然后退出Git for windows,再此打开Git for windows克隆。...,或服务器的ssh服务未安装/打开。...解决方法: 1、前者:可通过在Linux中终端输入“ifconfig -a”查看服务器正确的IP地址解决。 2、后者: (1)登录Centos 7系统。   使用root用户登录。

    2K30

    【自然语言处理】统计中文分词技术(一):1、分词与频度统计

    在汉语中,词语之间一般使用空格或标点符号进行分隔,每个词都具有独立的语义和语法功能。...” 利用语用、语境信息 日本保留和尚使用的古代庙宇已经不多了 乒乓球拍卖完了 4、分词的主要难点-未登录词 未登录词 就是在词典中没有登录过的人名(中国人名和外国人译名)、地名、机构名、新词语、缩略语等...歧义切分字段在汉语书面文本中所占的比例并不很大,在实际的书面文本中,特别是在新闻类文本中,未登录词的处理是书面文本自动切分的一个十分突出的问题。这是汉语书面语自动切分的另一个难点。...1)正向最大匹配法(从左到右的方向); 2)逆向最大匹配法(从右到左的方向); 3)最小切分(每一句中切出的词数最小) 4)双向最大匹配(进行从左到右、从右到左两次扫描 优点是速度快,时间复杂度可以保持在...sentence = sentence[max_match_len:len(sentence)] # 将符合的词语从原例句中截取 # 退出循环,重新从

    28810

    termux基本使用教程

    ucs-bom,cp936,latin1 set enc=utf8 set fencs=utf8,gbk,gb2312,gb18030 然后source下变量: source .vimrc 修改启动问候语...vim $PREFIX/etc/motd 按i然后编辑,比如 www.lruihao.cn 李瑞豪 Esc然后:wq退出 管理员权限 手机已经 root,安装tsu, 这是一个su的 termux...在管理员身份下,输入exit可回到普通用户身份。 美化 Termux-ohmyzsh 作用 : 美化之外,主要使用了zsh来替代bash作为默认shell。...ssh root@118.24.217.167 会提示输入密码,linux下输入密码是看不到的,大家都知道,小心点别输入错误。...nyancat 彩虹猫 彩虹貓(英语:Nyan Cat)是在 2011 年 4 月上传在 Youtube 的视频,并且迅速爆红于网络,並在 2011 年 YouTube 浏览量最高的视频中排名第五. pkg

    7.5K10

    Shell流程控制

    while 循环经常会和 read 命令一起使用,read 是 Bash 的内置命令,可用来读取文件,通常会按行读取:每次读一行。...但注意,管道两边的命令默认是在子 Shell 中执行的,所以其设置的变量在命令执行完成后就消失。换句话说,在父 Shell 中无法访问这些变量。...比如上面的 num 变量是在管道的 while 结构中设置的,除了在 while 中能访问该变量,其它任何地方都无法访问它。 如果想要访问 while 中赋值的变量,就不能使用管道。...---------------------------------------------------------------------------- exit [n] 退出当前shell,在脚本中应用则表示退出整个脚本...如果 return 用在 function 之外,但在 source 命令的执行过程中,则直接停止该执行操作,并返回给定状态码 n(如果未给定,则为 0)。

    92200

    100 个 Linux Shell 脚本经典案例解析

    , 在计算机中自动创建对应的账户并配置初始密码本脚本执行, 需要提前准备一个 user.txt 文件, 该文件中包含有若干用户名信息#!.../bin/bash# 使用 user.txt 文件中的人员名单,在计算机中自动创建对应的账户并配置初始密码# 本脚本执行,需要提前准备一个 user.txt 文件,该文件中包含有若干用户名信息for i.../bin/bash# 查看有多少远程的 IP 在连接本机(不管是通过 ssh 还是 web 还是 ftp 都统计) # 使用 netstat ‐atn 可以查看本机所有连接的状态,‐a 查看所有,# -.../bin/bash# 非交互自动生成 SSH 密钥文件 # ‐t 指定 SSH 密钥的算法为 RSA 算法;‐N 设置密钥的密码为空;‐f 指定生成的密钥文件>存放在哪里rm  -rf  ~/.ssh/.../bin/bash# 循环测试用户名与密码是否正确 # 循环测试用户的账户名和密码,最大测试 3 次,输入正确提示登录成功,否则提示登录失败# 用户名为 tom 并且密码为 123456  for i

    3.5K50

    Shell编程100例,超赞!

    ,在计算机中自动创建对应的账户并配置初始密码本脚本执行,需要提前准备一个 user.txt 文件,该文件中包含有若干用户名信息 #!.../bin/bash # 使用 user.txt 文件中的人员名单,在计算机中自动创建对应的账户并配置初始密码 # 本脚本执行,需要提前准备一个 user.txt 文件,该文件中包含有若干用户名信息 for.../bin/bash # 查看有多少远程的 IP 在连接本机(不管是通过 ssh 还是 web 还是 ftp 都统计) # 使用 netstat ‐atn 可以查看本机所有连接的状态,‐a 查看所有.../bin/bash # 循环测试用户名与密码是否正确 # 循环测试用户的账户名和密码,最大测试 3 次,输入正确提示登录成功,否则提示登录失败 # 用户名为 tom 并且密码为 123456.../bin/bash # 显示进度条(数字版) # echo 使用‐e 选项后,在打印参数中可以指定 H,设置需要打印内容的 x,y 轴的定位坐标 # 设置需要打印内容在第几行,第几列 for i in

    3.5K11

    在Linux使用Bash脚本命令

    编写Bash脚本或在Linux命令行上工作时,最常见的任务之一是读写文件。 本文介绍了如何使用重定向操作符和tee命令或者在bash脚本将文本写入文件。...使用重定向操作符写入文件 在Bash中,输出的重定向使您可以从命令捕获输出并将其写入文件。...>|运算符可让您覆盖Bash的“ noclobber”选项: set -o noclobber echo "this is a line" >| file.txt >>运算符将输出追加到文件末尾,而不是覆盖文件...\n" $USER > file.txt 如果要将多个行写入文件,请使用heredoc文档(Heredoc)重定向。...要将文本追加到您没有写权限的文件中,请在tee之前加 sudo : echo "this is a line" | sudo tee file.txt echo命令输出作为输入传递到tee,这将提升sudo

    2K10

    红队白帽必经之路(19)——如何用Metasploit 制作Linux恶意木马病毒软件获取shell

    /xuegod 然后惊奇的发现MSF控制台已经建立Session喽 查看相关信息 meterpreter > ifconfig 注意: 退出 session 需要使用 quit 正常退出 session...tee 不仅将内容写入文件,还会将它显示在标准输出上(即终端),使得你可以看到你所写入的内容。直接使用 > 或 >> 可能无法显示文件内容。tee 适用于需要同时查看和写入文件的场景。...'EOF' 引号的作用: 使用单引号 'EOF' 表示不会进行变量替换。这是一个安全的做法,特别是当文本中可能含有特殊字符时。...Kali 中执行如果再 XSHELL 中执行可能会导致窗口卡死 打包 dpkg -i free.deb # dpkg:用于管理Debian软件包的工具,-i:安装选项,free.deb:待安装的...正在处理用于 desktop-file-utils (0.27-1) 的触发器 ... 就算恶意软件包被卸载,payload 依旧正常运行。 meterpreter > pwd exit 退出即

    16710

    分享几个自动挂载分区的脚本

    现在VPS搭建宝塔后的很多问题与磁盘挂载有关 1、安装完面板后发现磁盘容量与实际购买容量不符 2、重启服务器后面板无法访问,网站、数据库文件丢失 以上都是因为未挂载磁盘,或挂载操作不当引起的,为解决这个问题...,我们制作了磁盘自动挂载工具,支持Centos、Ubuntu、Debian、Fedora 宝塔自动分区 说明: 1:本工具默认将数据盘挂载到/www目录 2:若您的磁盘已分区,且未挂载,工具会自动将分区挂载到.../www 3:若您的磁盘是新磁盘,工具会自动分区并格式化成xfs/ext4文件系统 【1.1】更新: 1:增加指定挂载目录功能 2:修正部分有独立引导分区的系统无法正确挂载的问题 【1.2】更新: 1:...,自动退出脚本,不执行任何操作 【1.7】 更新: 1:修复对面板6.x/7.x的支持 使用方法 :根据系统选择命令后进入ssh执行命令即可 已安装宝塔若想挂载迁移请先做快照 CentOS yum install...wget -y && wget -O auto_disk.sh http://download.bt.cn/tools/auto_disk.sh && bash auto_disk.sh Ubuntu

    66220

    未授权访问漏洞——以redis为例

    未授权漏洞的定义 什么是未授权漏洞? 需要安全配置或权限认证的地址、授权页面存在缺陷导致其他用户可以直接访问从而引发重要权限可被操作、数据库或网站目录等敏感信息泄露。...简而言之,就是任意用户在访问目标服务器的时候,没有经过授权就访问到理应经过授权才能访问的数据。 比如一个评论区,本来需要登录(即授权)才能留言评论。...4.为公钥正名 将公钥导入正确的路径,改为正确的名字 ? 5.免密登录 ?...3.利用计划任务 利用计划任务执行命令反弹shell,在redis以root权限运行时可以写crontab来执行命令反弹shell 1.监听端口 在自己的服务器上监听一个端口,最好不要设置常用的比如80...3.nc监听端口反弹回来的shell ? 4.退出 exit ?

    1K52

    Permission denied (publickey):无法通过公钥认证完美解决方法 ️

    在日常开发和运维中,SSH 公钥认证 是我们经常使用的一种安全登录方式。然而,有时候会遇到 “Permission denied (publickey)” 错误,导致无法通过公钥认证登录远程服务器。...# 客户端生成密钥对的命令 ssh-keygen -t rsa -b 4096 1.2 公钥与私钥的关系 在 SSH 认证中,公钥存储在服务器上,而私钥保存在客户端。...常见错误场景及其解决方案 ️ 2.1 公钥未正确上传到服务器 最常见的问题是公钥未正确上传到服务器的 ~/.ssh/authorized_keys 文件中,导致服务器无法验证客户端身份。...解决方案: 确保将公钥正确复制到服务器的 authorized_keys 文件中。...希望通过本文的讲解,大家能更好地理解和处理 SSH 公钥认证中的问题。 如果你有任何疑问或遇到其他问题,欢迎在评论区留言,我们一起交流探讨! 大家好,我是默语,擅长全栈开发、运维和人工智能技术。

    69910
    领券