有谁知道如何打印存储在詹金斯中的凭据?下面的脚本抛出:
Unexpected exception caught! groovy.lang.MissingPropertyException: No such property: crd for class: com.test.File
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
服务.groovy
withCredentials([usernamePassword(
credentialsId: vaultCredentialId, usernameVariable: 'ID', passwordVariable: 'CRED')]){
sh """
crd=${CRED}
for chars in `echo $crd | fold -w1`; do echo "value: $chars" ; done
"""
Run Code Online (Sandbox Code Playgroud) 我想在运行 makefile 命令时设置环境变量,但理想情况下这些变量将存储在另一个文件中。
./生成文件
_init_dev:
. ./config/dev-env
diff-dev: _init_dev
cdk diff
deploy-dev: _init_dev
cdk deploy
Run Code Online (Sandbox Code Playgroud)
./config/dev-env
export HELLO_CDK_DEPLOY_ENVIRONMENT=dev
Run Code Online (Sandbox Code Playgroud)
首先,我尝试使用source加载变量,但是失败并显示以下消息:
make: source: Command not found
我明白这是因为make运行sh而不是bash。
然后我尝试.在配置文件前面添加以尝试以这种方式加载变量。
这两种方法都没有奏效。当我运行cdk命令时,我可以从输出中看到环境变量尚未设置。
任何人都可以建议一种让它发挥作用的方法吗?
我需要使用函数将以下内容保存在文件中。
[hello]
world
Run Code Online (Sandbox Code Playgroud)
我尝试了几种方法,但没有一个有效。
#!/bin/bash
create_string() {
str="[${1}]\n"
str="${str}world\n"
echo $str
}
create_string hello >> string.txt
Run Code Online (Sandbox Code Playgroud)
文件是这样的。
[hello]\nworld\n
Run Code Online (Sandbox Code Playgroud) 当主分支中的新提交触发时,我试图从 CodeBuild 构建中获取提交的短 git SHA。
我知道其中CODEBUILD_RESOLVED_SOURCE_VERSION包含完整的提交 SHA。我想在将输出图像推送到 ECR 之前缩小该值以标记输出图像。
我尝试过buildspec.yml:
version: 0.2
phases:
pre_build:
commands:
...
- COMMIT_ID=${CODEBUILD_RESOLVED_SOURCE_VERSION:0:8}
...
build:
commands:
...
- echo Tagging image with commit id $COMMIT_ID
- docker tag $REPOSITORY_URI/$IMAGE_REPO_NAME:latest $REPOSITORY_URI/$IMAGE_REPO_NAME:$COMMIT_ID
...
post_build:
commands:
...
- docker push $REPOSITORY_URI/$IMAGE_REPO_NAME:$COMMIT_ID
Run Code Online (Sandbox Code Playgroud)
但我得到:
[Container] 2022/07/07 11:30:05 Running command COMMIT_ID=${CODEBUILD_RESOLVED_SOURCE_VERSION:0:8}
/codebuild/output/tmp/script.sh: 4: Bad substitution
Run Code Online (Sandbox Code Playgroud)
为什么会这样呢?
我需要一个 shell 脚本来检查目录是否包含超过 4 个文件并更改目录所有者。
下面的脚本仅检查目录是否为空,如果目录为空,则将目录所有者更改为 lohith ,如果目录不为空,则将所有者更改为 satha 。
这里需要添加到脚本中以检查目录是否包含超过 4 个文件,需要将所有者更改为 satha,如果目录包含少于 4 个文件或者目录为空,则需要将所有者更改为 lohith。
#!/bin/bash
FILE=""
DIR="/home/ec2-user/test1"
# init
# look for empty dir
if [ "$(ls -A $DIR)" ]; then
chown satha $DIR
else
chown lohith $DIR
fi
Run Code Online (Sandbox Code Playgroud) 我有一个 bash 脚本,错误地以 .py 命名(例如 test.py)。该脚本运行没有任何问题。(./test.py) 如果它可能有用,这里是来自 ls -l 命令的信息:-rwxr-xr-x。
我的问题是为什么脚本(test.py)执行时没有被正确命名为(test.sh),这可能会导致问题吗?
脚本内容如下所示:
#!/bin/bash
export SINGULARITYENV_LC_ALL=C.UTF-8
export SINGULARITYENV_LANG=C.UTF-8
CONTAINER=/mnt/pynet-pytorch-181.sif
# Pretrain
DATA=/mnt/Dataset/
EXPERIMENT_NAME=./2022_12_16/
srun -c 4 --gres=gpu:a6000:1 --mem=32G singularity exec -B /mnt:/mnt/ \
--nv $CONTAINER \
python train.py --dataroot $DATA \
--device "cuda" \
--pre_denoising False \
--experiment_name $EXPERIMENT_NAME \
--epochs 200
Run Code Online (Sandbox Code Playgroud)
我尝试再次运行另一个具有相同命名问题 *.py 的 bash 脚本,它执行时没有问题。我不明白为什么它会起作用。
在处理包含正数和负数列的数据文件时,我想出了使用column -t. 但是,这会将 -ve 符号视为字段来对齐列,这看起来不太好。有没有什么方法(即使在内部column)以不同的方式对待它?
编辑: 实际情况不需要具有相同数量的数字,并且许多数字包含许多列。一个玩具示例如下:
猫输入.txt
-1.5647453E-09 1.33356715E-09
1.3224229E-09 4.8350685E-09
1.7098133E-09 -2.8287697E-10
-3.3301262E-09 -1.8597501E-08
Run Code Online (Sandbox Code Playgroud)
和column -t:
-1.5647453E-09 1.33356715E-09
1.3224229E-09 4.8350685E-09
1.7098133E-09 -2.8287697E-10
-3.3301262E-09 -1.8597501E-08
Run Code Online (Sandbox Code Playgroud)
预期的:
-1.5647453E-09 1.33356715E-09
1.3224229E-09 4.8350685E-09
1.7098133E-09 -2.8287697E-10
-3.3301262E-09 -1.8597501E-08
Run Code Online (Sandbox Code Playgroud)
基本上,我想将每列从左侧(与第一个数字)对齐,以便它看起来如上。请注意,column -t它从左侧对齐,但也带有 -ve 符号,这是不需要的。
例如,在 中zsh,您可以执行以下操作:
% cat < file1 < file2
Run Code Online (Sandbox Code Playgroud)
你会看到两者。如何zsh在对程序透明的同时做到这一点cat?
该cat程序在 POSIX 系统上读取STDIN_FILENO并打印STDOUT_FILENO,那么一个文件描述符如何指向多个打开的文件描述呢?在 中sh,仅执行最后一个重定向(最右侧)。
我编写了这个脚本:
for i in `seq 1 $1`; do
timestamp=$(uuidgen)
cat $2.json | jq '.transactionId = "$timestamp"' > $3/$timestamp.json
done
Run Code Online (Sandbox Code Playgroud)
我的问题是,jq '.transactionId = "$timestamp"'因为文件的内容是:
{
"transactionId": "$timestamp"
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
使用shell命令执行以下操作的最简单方法是什么?
伪代码: rm abc if >100MB else mv abc /tmp
abc可以是一个文件或一个目录的名称。
我想拥有一个别名,如果在文件或目录上运行,则将其删除(如果其大小大于100MB),否则将其移至另一个目录。我知道我可以用全部功能完成类似的工作,但是必须有一个光滑的单面纸可以完成相同的工作。