space作为参数从bash编程

时间:2016-11-12 18:47:10

标签: linux bash shell whitespace

我正在使用bash运行应用程序,就像这样

   digitSquared(n) {

      % compute the occurrences of each digit
      numberOfDigits = [0 0 0 0 0 0 0 0 0]
      for m from 9 to 1 {

        numberOfDigits[m] = n / m*m;
        n = n % m*m;
          if (n==0)
            exit loop;
      }

     % assemble the final output
     output = 0
     powerOfTen = 0
     for m from 9 to 1 {
       for i from 0 to numberOfDigits[m] {
         output = output + m*10^powerOfTen
         powerOfTen = powerOfTen + 1
       }
     }

   }

其中./app_name var1 var2 $var3 var3,其中--a b, --c db不包含空格。

现在我想将参数d添加到--e f,但$var3包含空格。问题在于我试图避免改变这一行。

f

如果我这样离开,./app_name var1 var2 $var3 app_name的两个部分理解为两个不同的参数,因此无法解析。

我可以以某种方式更改f,以便它不会将var3拆分为两个不同的参数吗?我试过把引号放在里面,逃避空间,但它没有帮助。

1 个答案:

答案 0 :(得分:6)

您可以通过使var3成为数组来实现这一目标,例如:

var3=(--a b --c d --e "f1 f2")

./app_name var1 var2 "${var3[@]}"

这种方式f1 f2将被视为一个参数。