sh相关内容

eval/bash -c 与仅评估变量相比有何意义?

假设您将以下命令存储在变量中: COMMAND='echo hello' 有什么区别 $ eval "$COMMAND"你好$ bash -c "$命令"你好$ $命令你好 ?如果最后一个版本更短并且(据我所知)做了完全相同的事情,为什么几乎从未使用过它? 解决方案 第三种形式与其他两种形式完全不同——但要理解为什么,我们需要深入了解 bash 在解释命令时的操作顺序,并查看在使用 ..
发布时间:2021-12-15 08:02:42 服务器开发

詹金斯无法识别命令 sh?

我在尝试让 Jenkinsfile 工作时遇到了很多麻烦.我一直在尝试运行这个测试脚本: #!/usr/bin/env groovy节点{阶段('构建'){echo '建筑....'//创建虚拟环境sh '回声“嗨"'}阶段('测试'){echo '建筑....'}阶段('部署'){echo '部署中....'}} 但是我在尝试构建时不断收到此错误: 警告:JENKINS-41339 可能是 ..
发布时间:2021-12-14 21:34:32 其他开发

从 Windows 命令行打印 PDF

我正在尝试打印当前目录中的所有 pdf.当我在 cmd (singlepdf.sh) 中调用这个 bash 脚本时:'"C:\Program Files (x86)\Adobe\Reader 10.0\Reader\AcroRd32.exe"'/t Gemeinde_348_BioID_842_alt.pdf 一切正常. 使用此内容调用 multiplepdfs.sh 时: declare ..
发布时间:2021-12-14 15:29:53 其他开发

如何使用 bash 脚本编辑 XML?

12 需要从 bash 更改值 1 和 2 解决方案 将tag的值改为2和tag1的3 的值,使用 XMLStarlet: xmlstarlet ed \-u '/root/tag' -v 2 \-u '/root/tag1' -v 3 \新.xml 使用您的示例输入: xmlstarlet ed \-u ' ..
发布时间:2021-12-12 23:50:32 其他开发

如何检查一个数字是否在shell中的范围内

我只想在两个值之间插入数字,否则脚本会重复直到正确的数字. 这是我的脚本,它不能正常工作: 验证(){阅读号码if [ $number -ge 2 &&$number -ls 5 ];然后回声“有效数字"休息别的echo "无效号码,再试一次";菲}echo “插入号码"验证echo "你的电话号码是"$数字 解决方案 如果您使用 Bash,最好使用算术表达式 ((...)) 以提高可 ..
发布时间:2021-12-12 13:47:27 其他开发

如何在shell脚本中进行整数比较的逻辑或运算?

我正在尝试做一个简单的条件检查,但它似乎不起作用. 如果 $# 等于 0 或大于 1 则打招呼. 我尝试了以下语法但没有成功: if [ "$#" == 0 -o "$#" >1];然后回声“你好"菲如果 [ "$#" == 0 ] ||[ "$#" >1];然后回声“你好"菲 解决方案 这应该有效: #!/bin/bashif [ "$#" -eq 0 ] ||[“$#"-g ..
发布时间:2021-12-12 13:19:34 服务器开发

将 bash `ls` 输出转换为 json 数组

是否可以使用 bash 脚本将 ls 的输出格式化为 json 数组?要成为有效的json,目录和文件的所有名称都需要用双引号括起来,用逗号分隔,并且整个东西需要用方括号括起来.IE.转换: jeroen@jeroen-ubuntu:~/Desktop$ lsfoo.txt bar baz 到 [ "foo.txt", "bar", "baz" ] 编辑:我非常喜欢可以在我所有的 Linu ..
发布时间:2021-12-12 12:57:32 服务器开发

通过 Perl 脚本设置环境变量

我正在尝试通过 Perl 脚本以下列方式设置环境变量 LD_LIBRARY_PATH: 我在 /root 下创建了 .profile .profile 有一个 export 命令说: 导出 LD_LIBRARY_PATH=/ 我的 Perl 脚本是 test.pl 并且它有: #!/usr/bin/perlsystem("./root/.profile"); 当我执行 ./tes ..
发布时间:2021-12-10 18:55:18 服务器开发

如何获得“set -e"的效果和用处?在shell函数中?

set -e(或以 #!/bin/sh -e 开头的脚本)对于在出现问题时自动轰炸非常有用.它使我不必对每个可能失败的命令进行错误检查. 如何在函数中获得与 this 等效的值? 例如,我有以下脚本,该脚本在出错时立即退出并显示错误退出状态: #!/bin/sh -eecho "以下命令可能会失败:"错误的echo "这是在失败的命令之后" 输出符合预期: 以下命令可能会失败: ..
发布时间:2021-12-09 10:40:18 其他开发

当我们将命令放在美元符号和括号内时,shell 中的含义是什么:$(command)

我只是想了解 shell 中的以下代码行.它用于获取当前工作目录.我知道 $(variable) 名称返回变量名称内的值,但是 $(command) 应该返回什么?执行命令后是否返回值?在这种情况下,我们可以使用 ` 来执行命令. CWD="$(cd "$(dirname $0)"; pwd)" 在不同版本的shell中也可以从以下代码行中获取相同的输出 DIR="$( cd "$( dir ..
发布时间:2021-12-09 10:38:55 其他开发

在 sh shell 中找不到 source 命令

我有一个使用 sh shell 的脚本.我在使用 source 命令的行中收到错误消息.我的 sh shell 中似乎没有包含 source. 如果我明确尝试从 shell 运行 source 我得到: sh: 1: 来源:未找到 我应该以某种方式安装“源代码"吗?我的 sh 版本有误吗? 解决方案 /bin/sh 通常是其他一些试图模仿 The Shell 的 shell.许多 ..
发布时间:2021-12-09 10:28:33 其他开发

使用 Bash 计算字符串中字符的出现次数

我需要使用 Bash 计算一个字符在字符串中出现的次数. 在下面的例子中,当字符是(例如)t时,它echosvar 中的 >t,但是当字符为逗号或分号时,打印出零: var = "text,text,text,text"num = `expr 匹配 $var [,]`回声“$num" 解决方案 我会使用以下 awk 命令: string="text,text,text,text"字符 ..
发布时间:2021-12-09 10:21:23 其他开发

检查 shell 脚本中是否存在带有通配符的文件

我正在尝试检查文件是否存在,但使用通配符.这是我的例子: if [ -f "xorg-x11-fonts*";];然后printf "BLAH";菲 我也试过没有双引号. 解决方案 对于 Bash 脚本,最直接、最高效的方法是: if compgen -G "${PROJECT_DIR}/*.png";>/开发/空;然后echo "模式存在!";菲 即使在包含数百万个文件的目录中也 ..
发布时间:2021-12-09 09:50:02 其他开发

如何在 docker 容器内运行 cron 作业?

我正在尝试在调用 shell 脚本的 docker 容器中运行 cronjob. 昨天我一直在网上搜索和堆栈溢出,但我找不到真正有效的解决方案. 我该怎么做? 编辑: 我创建了一个 (评论)github 存储库,其中包含一个可调用的工作 docker cron 容器给定时间间隔的 shell 脚本. 解决方案 您可以将您的 crontab 复制到一个图像中,以便从该图像 ..
发布时间:2021-12-07 11:10:33 其他开发

如何在 Mac 上获得 GNU 的 readlink -f 的行为?

在 Linux 上,readlink 实用程序接受一个选项 -f 跟随附加链接.这似乎不适用于 Mac 和基于 BSD 的系统.等价物是什么? 以下是一些调试信息: $ which readlink;阅读链接 -f/usr/bin/readlink阅读链接:非法选项 -f用法:readlink [-n] [file ...] 解决方案 readlink -f 做了两件事: 它沿着 ..
发布时间:2021-12-06 20:34:02 其他开发

从一个文件中删除另一个文件中的行

我有一个文件 f1: line1线2线34号线.... 我想删除另一个文件 f2 中的所有行: line28号线.... 我用 cat 和 sed 尝试了一些东西,这甚至不是我想要的.我该怎么做? 解决方案 grep -v -x -f f2 f1 应该可以解决问题. 说明: -v 选择不匹配的行 -x 只匹配整行 -f f2 从 f2 获取模式 可以改为使用 ..
发布时间:2021-12-05 23:16:20 其他开发

Ctrl-C 如何终止子进程?

我想了解 CTRL+C 如何终止子进程而不是父进程.我在一些脚本 shell 中看到了这种行为,例如 bash,您可以在其中启动一些长时间运行的进程,然后通过输入 CTRL-C 来终止它控制权返回到外壳. 你能解释一下它是如何工作的,特别是为什么父(shell)进程没有终止? shell 是否必须对 CTRL+C 事件进行一些特殊处理,如果是,它究竟是做什么的? 解决方案 信号 ..
发布时间:2021-12-05 23:11:08 其他开发

使用 xargs 调用 shell 函数

我正在尝试使用 xargs 并行调用更复杂的函数. #!/bin/bashecho_var(){回声 $1返回 0}seq -f "n%04g" 1 100 |xargs -n 1 -P 10 -i echo_var {}退出 0 返回错误 xargs: echo_var: 没有那个文件或目录 欢迎任何有关我如何使用 xargs 完成此操作的想法,或任何其他解决方案. 解决方案 导 ..
发布时间:2021-12-05 23:09:54 其他开发

如何在脚本本身内重定向整个 shell 脚本的输出?

是否可以将 Bourne shell 脚本的所有输出重定向到某个地方,但在脚本本身中使用 shell 命令? 重定向单个命令的输出很容易,但我想要更像这样的东西: #!/bin/sh如果 [ !-t 0 ];然后# 将我所有的输出重定向到这里的一个文件菲# 脚本的其余部分... 含义:如果脚本以非交互方式运行(例如,cron),则将所有内容的输出保存到文件中.如果从 shell 以交互方 ..
发布时间:2021-12-05 23:02:31 其他开发