不确定如何在其他文件上写入

不确定如何在其他文件上写入

嗨,我有一个名为 script.sh 的脚本,它有 2 个变量

#! /bin/bash
read -p " name " name
read -p " last " last 
( here am not sure what to do but if possible to open file name.yaml write $name $last save and exit)
cat name.yaml

我在 name.yaml 中有另一个文件

 username: $name
  lastname: $last 

执行脚本:

./script.sh
   name AAA
   last BBB
 username: AAA
  lastname: BBB

我可以做这样的事情吗?感谢您的阅读并感谢您提前提供的帮助

答案1

如果您有变量,则可以echo将该变量添加到文件中:

echo "username: $name" > newfile
echo "lastname: $last" >> newfile

阅读“shell 中的流重定向”

答案2

要从变量创建格式正确的 YAML 文件,最好使用 YAML 感知工具,yq例如https://kislyuk.github.io/yq/

有了它,您可以像这样编写脚本:

#!/bin/bash

IFS= read -r -p 'Username : ' name1
IFS= read -r -p 'Last name: ' name2
IFS= read -r -p 'Quote    : ' quote

yq -y -n \
    --arg username "$name1" \
    --arg lastname "$name2" \
    --arg quote "$quote" \
    '$ARGS.named' >name.yaml

这用于yq创建一个 YAML 文档,其中包含使用该选项的多个实例在命令行上给出的每个键及其对应的值--arg

运行此命令会以交互方式要求用户提供三个字符串,然后使用三个键usernamelastname和创建一个 YAML 文件quote

$ ./script
Username : myself
Last name: von Self
Quote    : "Just do it!"
$ cat name.yaml
username: myself
lastname: von Self
quote: '"Just do it!"'

请注意,最后一个键的值会自动给出一组额外的单引号,以说明我输入的双引号应该是文字。

相关内容