#!/bin/bash
source /data/output/QAScripts/conf.ini
var=$($1path)
echo $var
conf.ini
配置文件中含有LSTpath=/data/bb/loader
我得到以下错误。我哪里做错了。
./file LST
line 8: LSTpath: command not found
答案1
您可以使用以下方法解决eval
。
eval - construct command by concatenating arguments
修改脚本如下:
#!/bin/bash
source /data/output/QAScripts/conf.ini
eval var='$'"$1"path
echo $var
然后像这样运行:
$ ./foo LST
/data/bb/loader
在哪里,
$ cat /data/output/QAScripts/conf.ini
LSTpath=/data/bb/loader
答案2
使用awk
,我不喜欢eval
;)
您var=$($1path)
执行脚本的第一个参数 ( $1
) 与path
作为命令连接。因此出现错误。
您的新脚本
#!/bin/bash
var=$(awk -F= '/^'"$1"'path/ {print $2}' /data/output/QAScripts/conf.ini)
echo "$var"
你的/data/output/QAScripts/conf.ini
LSTpath=/data/bb/loader
例子
$ ./foo LST
/data/bb/loader
答案3
使用grep
,评估:(
假设source
用于加载变量以从 conf.ini 获取路径
脚本
/bin/bash #!/bin/bash var=`grep $1 /data/output/QAScripts/conf.ini | grep -oP '[^'$1'path\=](.*)'` 回显 $var
配置文件
LSTpath=/数据/bb/加载器 添加#following 来演示 LSApath=/数据/bb/A LSBpath=/数据/bb/B LSCpath=/数据/bb/C
输出:根据arg var显示
root@controller:~# ./script.sh LST /数据/bb/加载程序 root@controller:~# ./script.sh LSA /数据/bb/A root@controller:~# ./script.sh LSB /数据/bb/B root@controller:~# ./script.sh LSC /数据/bb/C 根@控制器:~#
谢谢 :)