小编Dan*_*s W的帖子

如何将sed的结果分配给变量

下面是我用来找出删除sed人名中空格的命令的演示的完整副本,并将其压缩为没有空格。

完成后,我想将它分配给变量,comp然后我可以稍后在脚本中重新使用它。在这里,我只是尝试将echo其发送到标准输出,这样我就可以看到它起作用了。

如果我运行脚本并输入我的名字,Ronald McDonald我得到的结果是RonaldMcDonald}他名字末尾的花括号,或者我输入的任何内容。

我如何让它工作,以便结果不会将 附加}到指定文本的后面。

#!/bin/bash

function readName {
    echo "Enter your full name:"
    read fullName
    clear
}    # end readName

function cmprsName {
    comp={ echo "$fullName" } | sed 's/ //g'
}    # end cmprsName

function sayItNow {
    echo $comp
}    # end sayItNow

function allTogether {
    readName
    cmprsName
    sayItNow
}    #end allTogether

case $1 in
        -h | --help )           allTogether
                                exit
                                ;;
        * )                     echo …
Run Code Online (Sandbox Code Playgroud)

bash sed shell-script environment-variables bash-script

12
推荐指数
1
解决办法
3万
查看次数

使用 FreeBSD pkg 在没有确认提示的情况下安装软件包及其所有依赖项

有没有办法自动安装软件包及其依赖项,就像apt-get -y在 Debian 中一样,而不会每次都被提示?

一步安装 Webmin、NGiNX 和 nano,自动安装它们的所有依赖项:

sudo apt-get -y install webmin nginx nano
Run Code Online (Sandbox Code Playgroud)

在 FreeBSD 10 上,(我还在习惯 Ports)我会输入:

pkg install webmin nginx nano
Run Code Online (Sandbox Code Playgroud)

如果我附加-y开关,它就会失败。我查看了meBSDFreeBSD 手册中的文档,似乎没有选项/开关可供使用。任何人的想法?

freebsd package-management

11
推荐指数
1
解决办法
8231
查看次数

这两种 bash 环境有什么区别?

我注意到对于bash脚本,有些人使用了与我习惯放在自己顶部的不同的 shebang

有人可以简化这两者之间的区别吗?我一直用那个#!/bin/bash

#!/bin/bash
#!/usr/bin/env bash
Run Code Online (Sandbox Code Playgroud)

bash executable shell-script shebang

6
推荐指数
1
解决办法
574
查看次数

用文件名中的空格替换 %20?

我有一个使用%20表示名称中的空格的文件列表。

我目前正在尝试执行以下操作,将它们全部从 %20 更改为空格“”。

for x in *.txt
  do mv $x $(echo $x | sed -e 's/%20/ /')
done
Run Code Online (Sandbox Code Playgroud)

这玩意不好。它吐出这个:

usage: mv [-f | -i | -n] [-v] source target
       mv [-f | -i | -n] [-v] source ... directory
Run Code Online (Sandbox Code Playgroud)

但是当我导入它们时,我对我的一些图像做同样的事情并且它工作正常:

for x in *_MG*.CR2
  do mv $x $(echo $x | sed -e 's/_MG/_IMG/')
done
Run Code Online (Sandbox Code Playgroud)

忘记一个正在使用.TXT而另一个是.CR2,我在这里完全忽略了什么?

请记住,我使用的是工作笔记本电脑,因此我无法添加 Homebrew 来安装任何其他软件。它是用于操作系统的 Mac OS X。

sed shell-script filenames

4
推荐指数
3
解决办法
1万
查看次数

从 /etc/debian_version 中查找 Debian 版本号的 Bash 脚本

以下是我目前用于测试 Debian 版本的内容。而不是这样做,我可以让它更简洁吗?

#!/bin/bash
VERSION=NONE
if [ $(cat /etc/debian_version) == '7.3' ]; then
  VERSION=7
elif [ $(cat /etc/debian_version) == '7.2' ]; then
  VERSION=7
elif [ $(cat /etc/debian_version) == '7.1' ]; then
  VERSION=7
elif [ $(cat /etc/debian_version) == '7.0' ]; then
  VERSION=7
fi
Run Code Online (Sandbox Code Playgroud)

我知道这不是最吸引人的方式。我想要的是了解如何使用文件 at/etc/debian_version读取之前的版本号.并忽略之后的版本号。

我尝试使用

if [ $(cat /etc/debian_version) == '7.*' ]; then
Run Code Online (Sandbox Code Playgroud)

我也试过

if [ $(cat /etc/debian_version) == '7.2|7.1|7.0' ]; then
Run Code Online (Sandbox Code Playgroud)

但这些都不适合我。我想将来证明我的脚本,这样如果 Debian 7.4 发布,那么我就不必回顾所有依赖于此的脚本并更改它们

我也知道lsb_release -a向我展示了相关信息,我只是不知道如何从中“剪切”我想要的内容并检查它是否是 Debian 6 或 7。正如您想象的那样,原始脚本很长.

您可以指向我的任何其他帖子,也将使用“切割”方法将响应分开以仅划分出我想要的部分,这也将不胜感激。

bash debian awk bash-script

3
推荐指数
2
解决办法
4724
查看次数

任何地方的“if”开关列表?

是否有if用于 bash 脚本的所有开关的列表?有时我看到有人在使用它,我想知道他们使用的开关实际上是做什么的。

例子是-z在这个。我知道如何使用它,但我不知道它来自哪里。

if [ -z "$BASH_VERSION" ]; then
    echo -e "Error: this script requires the BASH shell!"
    exit 1
fi
Run Code Online (Sandbox Code Playgroud)

任何参考,指南,帖子,答案将不胜感激。谢谢!

bash terminal shell-script command-switch bash-script

1
推荐指数
1
解决办法
8506
查看次数

使用 sed 用包含变量的新行替换文本行

我正在研究这个解决方案:使用 sed 编辑带有变量的文件中的行并尝试将其应用于我的情况,但我最近才发现sed并且还没有掌握它。

如果我有一个文件/tmp/mary.txt,它看起来像这样:

Mary had a little lamb
with fleece as white as
snow. Everywhere that
Mary went, the lamb was
sure to go.
Run Code Online (Sandbox Code Playgroud)

我想替换此文件中的一行文本,特别是:

Mary had a little lamb -> Mary had 2 little lambs

我用过这个:

sed -i 's/*.had a little lamb.*/Mary had $(nproc) little lambs/' /etc/mary.txt
Run Code Online (Sandbox Code Playgroud)

我使用-i就地s/替代品,它抛出错误:

sed: 1: "mary.txt": extra characters at the end of g command
Run Code Online (Sandbox Code Playgroud)

我想做的另一件事是用结果替换第一行中的“lamb”一词 echo $PATH

sed -i …
Run Code Online (Sandbox Code Playgroud)

sed text-processing

1
推荐指数
1
解决办法
2万
查看次数