【问题标题】:Makefile errors while executing in Linux在 Linux 中执行时生成文件错误
【发布时间】:2012-05-09 04:18:57
【问题描述】:

我对自动化有一个要求。

我需要在 Linux 的命令行中将 1、2、3 等值传递给 MY_IMAGE。

我已经在其他 make 文件中为所有这些输入定义了活动。

我为我的要求编写了类似于下面的代码。问题是每当我传递诸如 MY_IMAGE=1、MY_IMAGE=2、MY_IMAGE=3 之类的值时

它只打印echo ACT_DO=XYZ;

当我选择 2 或 3 时,它不会显示其他信息。任何人都可以检查并更正我的代码。

export MY_IMAGE
MY_IMAGE=$img_value;
if [ $img_value :="1" ]
then
echo ACT_DO=XYZ;
else 
if [ $img_value :="2 ] 
then
echo ACT_DO=ABC;
else 
if [ $img_value :=3 ] 
then
echo ACT_DO=ETC;
else
echo ""$img_value" is unsupported";
exit 1; 
fi
fi
fi

【问题讨论】:

  • 这不是 makefile 语法。它是一个 shell 脚本吗?
  • 上述代码是否符合要求?如果是外壳也可以。
  • 此代码不可能工作:缺少" 引号。 := 看起来也有问题(为什么不是 =?)请在发布代码示例时复制并粘贴。
  • 你用的是什么外壳?据我所知,它看起来像bash

标签: linux shell


【解决方案1】:

据我所知,您的代码在错误的地方引用了一个引号,并使用了:=,这没有任何意义。它的实现也很混乱。

试试这个:

export MY_IMAGE
MY_IMAGE=$img_value

case "$img_value" in
1 ) echo ACT_DO=XYZ ;;
2 ) echo ACT_DO=ABC ;;
3 ) echo ACT_DO=ETC ;;
* )
  echo "\"$img_value\" is unsupported"
  exit 1
  ;;
esac

此代码不需要前两行,但我想您希望它用于其他内容。

【讨论】:

    猜你喜欢
    • 2017-07-25
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多