我可以重定向输出然后cat文件和grep/awk变量,但我想将此文件用于多个变量.
所以,如果它是一个变量说STATUS然后我可以做一些事情
echo "STATUS $STATUS" >> variable.file
#later perhaps in a remote shell where varible.file was copied
NEW_VAR=`cat variable.file | awk print '{$2}'`
Run Code Online (Sandbox Code Playgroud)
我想用sed进行一些内联编辑会有所帮助.代码越小越好.
该declare内建在这里很有用
for var in STATUS FOO BAR; do
declare -p $var | cut -d ' ' -f 3- >> filename
done
Run Code Online (Sandbox Code Playgroud)
正如布莱恩所说,以后你可以source filename
declare 很棒,因为它为你处理报价:
$ FOO='"I'"'"'m here," she said.'
$ declare -p FOO
declare -- FOO="\"I'm here,\" she said."
$ declare -p FOO | cut -d " " -f 3-
FOO="\"I'm here,\" she said."
Run Code Online (Sandbox Code Playgroud)
将变量存储在文件中的一种常见方法是在文件中存储NAME=value行,然后将其输入到要获取变量的shell中.
echo 'STATUS="'"$STATUS"'"' >> variable.file
# later
. variable.file
Run Code Online (Sandbox Code Playgroud)
在Bash中,您也可以使用source而不是.,尽管这可能无法移植到其他shell.请仔细注意在文件中打印出正确的双引号所需的确切引号序列.
如果要将多个变量一次放入文件中,可以执行以下操作.对于引用扭曲的道歉,这需要做得恰当和便携; 如果你把自己局限于Bash,你可以$""用来使引用更简单:
for var in STATUS FOO BAR
do
echo "$var="'"'"$(eval echo '$'"$var")"'"'
done >> variable.file
Run Code Online (Sandbox Code Playgroud)