Bon*_*nz0 8 bash shell ubuntu grep
我不敢相信我花了1.5个小时做一些像这样微不足道的事情.我正在写一个非常简单的shell脚本,它会压缩文件,将输出存储在变量中,并将变量回显到STDOUT.
我在命令行上使用正则表达式检查了grep命令,它工作正常.但由于某种原因,grep命令在shell脚本中不起作用.
这是我写的shell脚本:
#!/bin/bash
tt=grep 'test' $1
echo $tt
Run Code Online (Sandbox Code Playgroud)
我使用以下命令运行它:./myScript.sh testingFile.它只是打印一个空行.
/bin了.echo $SHELL给出/bin/bashtt=grep 'test' "$1"echo ${tt}tt=grep 'test' testingFiledos2unix删除任何可能的回车.tt=grep -oE 'test' testingFile,我收到错误说:./out.sh: line 3: -oE: command not found.Chr*_*our 15
您需要使用命令替换:
#!/usr/bin/env bash
test=$(grep 'foo' "$1")
echo "$test"
Run Code Online (Sandbox Code Playgroud)
命令替换允许输出命令来替换命令本身.命令替换发生在包含如下命令时:
$(command)
Run Code Online (Sandbox Code Playgroud)
或者像这样使用反引号:
`command`
Run Code Online (Sandbox Code Playgroud)
Bash通过执行COMMAND并使用命令的标准输出替换命令替换来执行扩展,并删除任何尾随换行符.嵌入的换行不会被删除,但在分词时可能会被删除.
该$()版本通常是首选,因为它允许嵌套:
$(command $(command))
Run Code Online (Sandbox Code Playgroud)
有关更多信息,请参阅中的command substitution部分man bash.
| 归档时间: |
|
| 查看次数: |
20124 次 |
| 最近记录: |