嗨,我有一个名为 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
。
运行此命令会以交互方式要求用户提供三个字符串,然后使用三个键username
、lastname
和创建一个 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!"'
请注意,最后一个键的值会自动给出一组额外的单引号,以说明我输入的双引号应该是文字。