我在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命令本身.
如何将命令的输出存储到变量并保留换行符/回车符?
我正在尝试将一个文本块捕获到变量中,并保持换行符,然后回显它.
但是,当我捕获文本或显示文本时,似乎不会保留换行符.
有关如何实现这一目标的任何想法?
例:
#!/bin/bash
read -d '' my_var <<"BLOCK"
this
is
a
test
BLOCK
echo $my_var
Run Code Online (Sandbox Code Playgroud)
输出:
这是一个测试
期望的输出:
这个
是
一个
测试
行动:
- 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避免在输出中暴露多行值的正确方法是什么?