相关疑难解决方法(0)

在bash中将命令输出存储到变量时,如何保留换行符?

我在Linux上使用bash shell.我有这个简单的脚本......

#!/bin/bash

TEMP=`sed -n '/'"Starting deployment of"'/,/'"Failed to start context"'/p' "/usr/java/jboss/standalone/log/server.log" | tac | awk '/'"Starting deployment of"'/ {print;exit} 1' | tac`
echo $TEMP
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此脚本时

./temp.sh
Run Code Online (Sandbox Code Playgroud)

所有输出都打印出来没有回车/换行.不知道我将输出存储到$ TEMP的方式,还是echo命令本身.

如何将命令的输出存储到变量并保留换行符/回车符?

linux bash shell

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

如何在bash中优雅地存储和回显多条线?

我正在尝试将一个文本块捕获到变量中,并保持换行符,然后回显它.

但是,当我捕获文本或显示文本时,似乎不会保留换行符.

有关如何实现这一目标的任何想法?

例:

#!/bin/bash

read -d '' my_var <<"BLOCK"
this
is
a
test
BLOCK

echo $my_var
Run Code Online (Sandbox Code Playgroud)

输出:

这是一个测试

期望的输出:

这个

一个

测试

linux bash scripting

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

如何屏蔽 GitHub 操作中的多行值?

行动:

- id: sets-a-secret
  run: |
    local_secret=$(doppler secrets get GAR_JSON_KEY --plain)
    echo "::add-mask::$local_secret"
    echo "::set-output name=my-secret::$local_secret"
  env:
    DOPPLER_TOKEN: ${{ secrets.DOPPLER_TOKEN }}
Run Code Online (Sandbox Code Playgroud)

local_secret等于:

{
  "type": "service_account",
  "project_id": "contrawork"
}
Run Code Online (Sandbox Code Playgroud)

在 GitHub 日志中,仅隐藏该值的第一行:

##[debug]/usr/bin/bash -e /var/actions-runner/_runners/1/_work/_temp/10dcce73-cb22-43d9-853d-6c9674f6895e.sh
::add-mask::***
  "type": "service_account",
  "project_id": "contrawork"
}
::set-output name=my-secret::***
##[debug]steps['sets-a-secret']['outputs']['my-secret']='***'
  "type": "service_account",
  "project_id": "contrawork"
}
##[debug]Finishing: Run local_secret=$(doppler secrets get GAR_JSON_KEY --plain)
Run Code Online (Sandbox Code Playgroud)

add-mask避免在输出中暴露多行值的正确方法是什么?

github-actions

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

标签 统计

bash ×2

linux ×2

github-actions ×1

scripting ×1

shell ×1