我试图找到一种方法来为文件中的变量赋值。 我的文件有
PID=1
VALUE=1000
CMD=/usr/bin/ls -l
我想分配" ="的正确部分;符号作为左侧名称的值,此左侧名称应视为变量名称。
应该就像当我打印$ PID时,我应该得到1,当我打印$ VALUE时我应该得到1000,当我打印$ CMD我应该得到/ usr / bin / ls -l, 我尝试使用eval,但没有工作。任何帮助表示赞赏??。
答案 0 :(得分:1)
在文件调用前使用.
。这在当前shell中执行文件
. YourFile
echo $PID
1
但这对于CMD来说会失败,因为这不是正确的字符串(没有引用),也不是一个动作(不是后引用或eval或$( )
所以要使用它是carrefull。
解决方案(基本,无法控制内容类型和=
之后的格式):
sed -n -e '/[[:alnum:]_]\{1,\}=/ s/=\(.*\)$/="\1"/p' YourFile > /tmp/ToVar.tmp
. /tmp/ToVar.tmp
rm /tmp/ToVar.tmp